(시스템 프로그래밍) 4-3 타이머 관리

업데이트:
1 분 소요

시스템 프로그래밍 - 타이머 관리

1. 리눅스 시스템 타이머

  • 1970년 1월 1일 0시 0분 0초(UTC)를 기준으로 현재까지 경과한 시간을 초 단위로 저장하고
    이를 기준으로 시간 정보 관리

1) 기본 시간 정보 확인

(1) 초 단위로 현재 시간 정보 얻기 : time(2)

  #include <sys/types.h>
  #include <time.h>

  time_t time(time_t *tloc);
  • tloc : 검색할 시간 정보를 저장할 주소

(2) 마이크로 초 단위로 시간 정보얻기 : gettimeofday(3)

  #include <sys/time.h>

  int gettimeofday(struct timeval *tp, void *tzp);
  int settimeofday(struct timeval *tp, void *tzp);
  • tp : 시간 정보 구조체 주소
  • tzp : 시간대

2) 시간대 정보 : tzset(3)

  • 현재 지역의 시간대로 시간을 설정
  #include <time.h>

  void tzset(void);
  • 이 함수를 호출하면 전역변수 4개에 정보를 설정
  extern time_t timezone, altzone;
  extern int daylight;
  extern char *tzname[2];

(1) timezone

  • UTC와 지역 시간대와 시차를 초 단위로 저장

(2) altzone

  • UTC와 일광절약제 등으로 보정된 지역시간대와의 시차를 초 단위로 저장

(3) daylight

  • 일광절약제를 시행하면 0 이외의 값, 시행하지 않으면 0

(4) tzname

  • 지역시간대와 보정된 시간대명을 약어로 저장

3) 시간의 형태 변환

(1) 초단위 시간 정보 분해 : gmtime(3), localtime(3)

  #include <time.h>

  struct tm *localtime(const time_t *clock);
  struct tm *gmtime(const time_t *clock);
  • 초를 인자로 받아 tm구조 리턴, gmtime은 UTC기준, localtime은 지역시간대 기준

(2) 초단위 시간으로 역산 : mktime(3)

  #include <time.h>

  time_t mktime(struct tm *timeptr);

(3) tm구조체

alt

  • tm_mon(월) : 0(1월) ~ 11 (12월)
  • tm_year(연도) : 년도 - 1900
  • tm_wday(요일) : 0(일) ~ 6(토)
  • tm_isdst(일광절약제) : 1(시행)

2. 리눅스 시스템 타이머 함수

1) 형식 지정 시간 출력

(1) 초단위 시간을 변환해 출력하기 : ctime(3)

  #include <time.h>

  char *ctime(const time_t *clock);
  • clock : 초 단위 시간을 저장한 주소

(2) tm 구조체 시간을 변환해 출력하기 : asctime(3)

  #include <time.h>

  char *asctime(const struct tm *tm);
  • tm : 시간정보를 저장한 tm 구조체 주소

(3) 출력 형식 기호 사용 : strftime(3)

  #include <time.h>

  size_t strftime(char *restrict s, size_t maxsize,
            const char *restrict format, const struct tm *restrict timeptr);
  • s : 출력할 시간 정보를 저장할 배열 주소
  • maxsize : s의 크기
  • format : 출력 형식
  • timeptr : 출력할 시간정보를 저장한 구조체 주소

(4) 형식 지정 시간 출력

alt alt

댓글남기기