Linux/개념 실습 프로그래밍
gettimeofday 함수
luckybee
2022. 3. 16. 21:24
728x90
반응형
#include <sys/time.h>
gettimeofday 함수는 위에 있는 헤더 파일을 선언해줘야 사용할 수 있는 Linux에서 사용하는 c 헤더이다.
이 함수는 현재 시스템 시간을 마이크로 초까지 읽어주는 함수이다.
gettimeofday의 첫 번째 인자인 tv는 현재 시스템 시간을 저장하기 위한 구조체
struct timeval
{
long tv_sec; // 초
long tv_usec; // 마이크로초
}
tv_sec는 초 단위 값이 저장되어 있고 tv_usec는 마이크로 초 단위의 값이 저장되어 있다. 여기서 1000000 마이크로 초가 1초이고 1000 마이크로 초는 1밀리 초다.
두 번째 인자인 tz은 사용되고 있지 않으며 복잡하게 생각할 필요 없이 tz은 NULL을 사용하도록 한다.
gettimeofday의 예제
#include <sys/time.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
int main()
{
struct timeval mytime;
// 현재 시간을 얻어온다.
gettimeofday(&mytime, NULL);
printf("%ld:%ld\n", mytime.tv_sec, mytime.tv_usec);
// 시간을 1시간 뒤로 되돌려서 설정한다.
mytime.tv_sec -= 3600;
settimeofday(&mytime, NULL);
return 0;
}
time(2)
현재는 time(2)를 대신해서 쓰이고 있으며, 가능한 time(2) 대신 gettimeofday을 사용하는 것을 권장한다.
#include <time.h>
time_t time(time_t *t);
time(2) 함수는 반환하는 시간이 1970년 1월 1일 00:00:00부터 지금까지의 시간을 초단위로 환산한 것이다.
만약 아규먼트로 들어가는 t 가 NULL 이 아니라면 반환값은 t 가 가리키는 메모리에 저장된다.
time(2)의 반환값은 현재까지의 흐른 시간을 초 단위로 리턴한다. 애러가 발생할 경우 -1이 리턴된다.
time(2)의 예제
#include <time.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
void swaptime(time_t, char *);
int main()
{
int i;
time_t the_time;
char buffer[255];
// 현재 TIME 을 구한다.
time(&the_time);
printf("현재 시간은 %d 초\n", the_time);
// 보기좋은 지역시간대로 바꾼다.
swaptime(the_time, buffer);
printf("%s\n", buffer);
}
void swaptime(time_t org_time, char *time_str)
{
struct tm *tm_ptr;
tm_ptr = localtime(&org_time);
sprintf(time_str, "%d/%d/%d %d:%d:%d",
tm_ptr->tm_year+1900,
tm_ptr->tm_mon+1,
tm_ptr->tm_mday,
tm_ptr->tm_hour,
tm_ptr->tm_min,
tm_ptr->tm_sec);
}
아규먼트(argument): 함수를 이용하는 사람이 매개변수에 집어넣는 값을 의미
파라미터(parameter): 우리말로 매개변수, 함수를 구현하는 쪽과 사용하는 쪽을 매개하는 변수가 된다.
728x90
반응형