프로그램에서 time은 크게 calendar time과 Process/CPU time으로 나뉜다.
1. Calendar time
- UTC (Coordinated Universal Time) / GMT (Greenwich Mean Time): 세계 공통으로 기준이 되는 시간
- Epoch time: 1970년 1월 1일 00시 00분 00초를 기점으로 하여 몇 초가 지났는지를 나타낸다
2.Process/CPU time
- 1 tick = 1 ms or 10 ms
- time = 프로그램이 얼마나 실행되었는지를 쉘에서 보여주는 초 단위의 시간
time과 관련된 함수들을 소개해보겠다.
time_t time (time_t *tloc)
- tloc: epoch time이 들어간다
정상적인 경우 현재 epoch time이 반환되고 error시 -1이 반환된다
int stime (const time_t *tp)
- tp: set 할 epoch time
정상적인 경우 0이, error시 -1이 반환된다
tm은 시간과 관련된 변수들이 저장되어 있는 구조체이다. 이 구조체를 이용하여 시간과 관련된 여러 설정을 할 수 있다.
struct tm *localtime (const time_t *clock) // local time
- clock: epoch time이 들어간다
tm의 포인터가 반환된다
struct tm *gmtime (const time_t *clock) // GMT
- clock: epoch time이 들어간다
tm의 포인터가 반환된다
epoch time을 넣고 tm 포인터가 반환되면 tm 안에 있는 변수들을 활용하여 tm->tm_yday 같이 년, 월, 일, 시, 분, 초 등을 출력할 수 있다.
time_t mktime (struct tm *timeptr)
- timeptr: tm에 대한 포인터
정상적인 경우 epoch time이, error시 -1이 반환된다. tm 구조체를 epoch time으로 형식을 변환하는 기능이다.
char *ctime (const time_t *clock)
- clock: epoch time이 들어간다
time string이 반환된다
char *asctime (const struct tm *tm)
- tm: tm에 대한 포인터
- time string이 반환된다
ctime, asctime 모두 time string이 반환되지만 epoch time을 통해 반환하는가, tm을 통해 반환하는가의 차이이다.
size_t strftime (char *s, size_t maxsize, const char *format, const struct tm *timeptr)
- s: string buffer
- maxsize: buffer size
- format: conversion format
- timeptr: tm pointer
정상적인 경우 s에 있는 문자의 개수가 반환되고 error시 0이 반환된다
strftime은 format에 %A, %d 등 다양한 형식을 지원한다.
이런 식으로 하게 되면 반환 값이 6이 되고 str을 출력하면
Wednesday Jul 11 192 27 28이 된다.
'컴퓨터 공학 전공 > 시스템 프로그래밍' 카테고리의 다른 글
Network (0) | 2020.04.01 |
---|---|
Memory Mapped File (0) | 2020.04.01 |
IPC (0) | 2020.04.01 |
signal (0) | 2020.04.01 |
record lock (0) | 2020.04.01 |