NAME

timeradd, timersub, timercmp, timerclear, timerisset - timeval 연산

SYNOPSIS

#include <sys/time.h>

void timeradd(struct timeval *a, struct timeval *b,
              struct timeval *res);
void timersub(struct timeval *a, struct timeval *b,
              struct timeval *res);

void timerclear(struct timeval *tvp);
int timerisset(struct timeval *tvp);

int timercmp(struct timeval *a, struct timeval *b, CMP);

glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):

위의 모든 함수:
glibc 2.19부터:
_DEFAULT_SOURCE
glibc 2.19 및 이전:
_BSD_SOURCE

DESCRIPTION

<sys/time.h>에 다음처럼 정의돼 있는 timeval 구조체에 대해 동작하는 매크로들이다.

struct timeval {
    time_t      tv_sec;     /* 초 */
    suseconds_t tv_usec;    /* 마이크로초 */
};

timeradd()ab의 시간 값을 더해서 그 합을 res가 가리키는 timeval에 넣는다. res->tv_usec이 0에서 999,999 범위의 값을 가지도록 결과가 정규화 된다.

timersub()a의 시간 값에서 b의 시간 값을 빼서 그 결과를 res가 가리키는 timeval에 넣는다. res->tv_usec이 0에서 999,999 범위의 값을 가지도록 결과가 정규화 된다.

timerclear()tvp가 가리키는 timeval 구조체를 0으로 채워서 에포크 1970-01-01 00:00:00 +0000 (UTC)를 나타내도록 한다.

timerisset()tvp가 가리키는 timeval 구조체의 어느 필드라도 0 아닌 값을 담고 있으면 참(0 아닌 값)을 반환한다.

timercmp()는 비교 연산자 CMP를 써서 ab의 시간 값을 비교해서 그 결과에 따라 참(0 아닌 값)이나 거짓(0)을 반환한다. 일부 시스템(리눅스/glibc는 아님)에서는 timercmp() 구현이 불완전해서 CMP>=, <=, ==이면 제대로 동작하지 않는다. 이식 가능한 응용에서는 대신 다음 방식을 쓸 수 있다.

!timercmp(..., <)
!timercmp(..., >)
!timercmp(..., !=)

RETURN VALUE

timerisset()timercmp()는 참(0 아닌 값) 또는 거짓(0)을 반환한다.

ERRORS

어떤 오류도 정의되어 있지 않다.

CONFORMING TO

POSIX.1에는 없다. 대부분의 BSD 파생 시스템에 존재한다.

SEE ALSO

gettimeofday(2), time(7)


2021-03-22