1. time_t 시간
System Program/time 2014. 2. 21. 15:311. 리눅스 시간
리눅스는 초기 기원값에서 얼마만큼 시간이 흘렀는지를 나타내는 지표로 시간을 관리한다.
여기서 초기 기원값은 1970년 1월 1일 0시를 말한다.
이 시간은 time_t라는 데이터형을 통해서 얻거나 관리할 수 있다.
리눅스에서는 time_t를 얻기위해서 아래와 같은 시스템 호출 함수를 지원한다.
1.1. time() 시스템 함수
#include <time.h>
time_t time(time_t *timep);
기원 이래의 초 수를 리턴한다. 에러가 발생하면 (time_t) -1을 리턴한다.
time()함수는 time_t를 두 군데에서 리턴하므로 에러 확인은 유효하지 않는 저장소를 참조할 때 발생할 수 있는 errno에
대한 EFAULT값만 확인한다.
1.2. gettimeofday() 시스템 함수
#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
1)
struct timeval {
time_t tv_sec; /* UTC 1970-1-1, 0시 이래의 초 */
suseconds_t tv_usec; /* 추가적인 마이크로 초(long int) */
} ;
2)
struct timezone *tz = NULL 로 할당하면 된다.
성공하면 '0'을 리턴, 에러가 발생하면 '-1'을 리턴
1.3. ctime() 함수
사용자가 읽기 편한 구조로 변환하는 함수이다.
#include <time.h>
char *ctime(const time_t *timep);
성공하면 '\0'으로 끝나는 정적 문자열 리턴, 에러가 발생하면 NULL을 리턴
2. 위의 함수 사용 예시
* * main.c -- C Test App. * * Copyright (C) 2012-2013, 2013 heesoon.kim <chipmaker.tistory.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/time.h> #include <time.h> int main(int argc, char *argv[]) { struct timeval tv; time_t t; if(gettimeofday(&tv, NULL) == -1) perror("gettimeofday\n"); printf("gettimeofday = %ld, %ld\n", tv.tv_sec, tv.tv_usec); t = time(NULL); if(errno == EFAULT) perror("time\n"); printf("time = %ld\n", t); printf("current time : %s", ctime(&t)); printf("current time : %s", ctime(&tv.tv_sec)); return 0; }
3. 결론
여기서는 time_t 가 무엇이고, 이를 얻기 위해서 사용되는 함수들을 소개하고 사용법에 대해서 고찰해 보았다.
'System Program > time' 카테고리의 다른 글
3. Timer and Alarm (0) | 2014.02.24 |
---|---|
2. 시간의 개념 (0) | 2014.02.21 |