1. time_t 시간

System Program/time 2014. 2. 21. 15:31

1. 리눅스 시간

 

리눅스는 초기 기원값에서 얼마만큼 시간이 흘렀는지를 나타내는 지표로 시간을 관리한다.

여기서 초기 기원값은 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
: