clock_nanosleep(2) - wariua/manpages-ko GitHub Wiki
clock_nanosleep - ν΄λ μ§μ μ΄ κ°λ₯ν κ³ ν΄μλ sleep
#include <time.h>
int clock_nanosleep(clockid_t clock_id, int flags,
const struct timespec *request,
struct timespec *remain);
-lrt
λ‘ λ§ν¬ (glibc λ²μ 2.17 μ μμλ§).
glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
clock_nanosleep()
_POSIX_C_SOURCE >= 200112L
nanosleep(2)κ³Ό λ§μ°¬κ°μ§λ‘ clock_nanosleep()
μ ν΅ν΄ νΈμΆ μ€λ λκ° λλ
Έμ΄ μ λ°λλ‘ μ§μ ν μκ° λμ μ λ€ μ μλ€. μ°¨μ΄μ μ μλ©΄ μκ°μ μΈ‘μ νλ ν΄λμ νΈμΆμκ° μ νν μ μλ€λ μ κ³Ό μλ©΄ μκ°μ μ λκ°μ΄λ μλκ°μΌλ‘ μ§μ ν μ μλ€λ μ μ΄λ€.
μ΄ νΈμΆλ‘ μ£Όκ±°λ λλ €λ°λ μκ° κ°λ€μ λ€μκ³Ό κ°μ΄ μ μλ timespec
κ΅¬μ‘°μ²΄λ‘ λνλΈλ€.
struct timespec {
time_t tv_sec; /* μ΄ */
long tv_nsec; /* λλ
Έμ΄ ([0 .. 999999999] */
};
clock_id
μΈμλ μ λλ μκ°μ μΈ‘μ ν ν΄λμ λνλΈλ€. λ€μ κ°λ€ μ€ νλλ₯Ό μ΄ μΈμμ μΈ μ μλ€.
CLOCK_REALTIME
- μ€μ κ°λ₯ν μμ€ν μ μ μ€μ μκ° ν΄λ.
CLOCK_MONOTONIC
- μμ€ν μλ ν λ°λμ§ μλ κ³Όκ±° μ΄λ€ λΆνΉμ μμ λΆν°μ μκ°μ μΈ‘μ νλ μ€μ λΆκ°λ₯ν λ¨μ‘° μ¦κ° ν΄λ.
-
CLOCK_PROCESS_CPUTIME_ID
(리λ μ€ 2.6.12λΆν°.) - νλ‘μΈμ€μ λͺ¨λ μ€λ λκ° μλͺ¨ν CPU μκ°μ μΈ‘μ νλ μ€μ κ°λ₯ν νλ‘μΈμ€λ³ ν΄λ.
μ΄ ν΄λλ€μ λν λ μμΈν λ΄μ©μ clock_getres(2)λ₯Ό 보λΌ. λν clock_getcpuclockid(3) λ° pthread_getcpuclockid(3)κ° λ°νν CPU ν΄λ IDλ clock_id
μ μ€ μ μλ€.
flags
κ° 0μ΄λ©΄ request
μ μ§μ ν κ°μ clock_id
μ μ§μ ν ν΄λμ νμ¬ κ°μ λν μλμ μκ°μΌλ‘ ν΄μνλ€.
flags
κ° TIMER_ABSTIME
μ΄λ©΄ request
λ₯Ό clock_id
ν΄λμΌλ‘ μΈ‘μ ν μ λ μκ°μΌλ‘ ν΄μνλ€. request
κ° ν΄λμ νμ¬ κ°λ³΄λ€ μκ±°λ κ°μΌλ©΄ νΈμΆ μ€λ λκ° λ©μΆμ§ μκ³ clock_nanosleep()
μ΄ μ¦μ λ°ννλ€.
clock_nanosleep()
μ μ μ΄λ request
μ μ§μ ν μκ°μ΄ μ§λ λκΉμ§, λλ νΈλ€λ¬ νΈμΆμ μ λ°νκ±°λ νλ‘μΈμ€λ₯Ό μ’
λ£μν€λ μκ·Έλμ΄ μ λ¬λ λκΉμ§ νΈμΆ μ€λ λμ μ€νμ λ©μΆλ€.
νΈμΆμ΄ μκ·Έλ νΈλ€λ¬μ μν΄ μ€λ¨λλ κ²½μ°μλ clock_nanosleep()
μ΄ EINTR
μ€λ₯λ‘ μ€ν¨νλ€. λλΆμ΄ remain
μ΄ NULLμ΄ μλκ³ flags
κ° TIMER_ABSTIME
μ΄ μλμμΌλ©΄ λ¨μ μλ©΄ μκ°μ remain
μΌλ‘ λ°ννλ€. κ·Έλ¬λ©΄ μ΄ κ°μΌλ‘ λ€μ clock_nanosleep()
μ νΈμΆν΄μ (μλμ ) μλ©΄μ λλ§μΉ μ μλ€.
μμ² μκ° λμ μ±κ³΅μ μΌλ‘ μ λ κ²½μ° clock_nanosleep()
μ 0μ λ°ννλ€. νΈμΆμ΄ μκ·Έλ νΈλ€λ¬μ μν΄ μ€λ¨λκ±°λ μ€λ₯λ₯Ό λ§λ κ²½μ°μλ ERRORSμ λμ΄λ μμ μ€λ₯ λ²νΈλ€ μ€ νλλ₯Ό λ°ννλ€.
EFAULT
- μ§μ ν
request
λremain
μ΄ μ ν¨νμ§ μμ μ£Όμμ΄λ€. EINTR
- μκ·Έλ νΈλ€λ¬μ μν΄ μ λ€κΈ°κ° μ€λ¨λμλ€. signal(7) μ°Έκ³ .
EINVAL
-
tv_nsec
νλμ κ°μ΄ 0μμ 999999999κΉμ§ λ²μ μμ΄ μλκ±°λtv_sec
μ΄ μμμ΄λ€. EINVAL
-
clock_id
κ° μ ν¨νμ§ μλ€. (CLOCK_THREAD_CPUTIME_ID
λclock_id
μ κ°λ₯ν κ°μ΄ μλλ€.)
리λ
μ€ 2.6μμ clock_nanosleep()
μμ€ν
νΈμΆμ΄ μ²μ λ±μ₯νλ€. glibc λ²μ 2.1λΆν° μ§μμ μΈ μ μλ€.
POSIX.1-2001, POSIX.1-2008.
request
μ μ§μ ν μκ°μ΄ κΈ°λ° ν΄λ μ λ°λ(time(7) μ°Έκ³ )μ μ μλ°°κ° μλλ©΄ λ€μ λ°°μλ‘ μκ°μ μ¬λ¦Ό νλ€. λν μ λ€κΈ°κ° λλ νμλ CPUμμ νΈμΆ μ€λ λλ₯Ό λ€μ μ€νν μ μκ² λ λκΉμ§ μ§μ°μ΄ μμ μλ μλ€.
μ λ νμ΄λ¨Έλ₯Ό μ°λ©΄ nanosleep(2)μμ μ€λͺ
νλ λ¦μΆ°μ§λ λ¬Έμ λ₯Ό λ§λ λ° λμμ΄ λλ€. (μλμ μ λ€κΈ°κ° λ°λ³΅μ μΌλ‘ μκ·Έλμ μν΄ μ€λ¨λΌμ μ¬μμνλ € νλ νλ‘κ·Έλ¨μμ κ·Έ λ¬Έμ κ° μ¬ν΄μ§λ€.) μλμ μ λ€κΈ°λ₯Ό νλ©΄μ μ΄ λ¬Έμ λ₯Ό νΌνλ €λ©΄ μνλ ν΄λμΌλ‘ clock_gettime(2)μ νΈμΆνκ³ μ TIMER_ABSTIME
νλκ·Έλ‘ clock_nanosleep()
μ νΈμΆνλ©΄ λλ€.
clock_nanosleep()
μ sigaction(2) SA_RESTART
νλκ·Έλ₯Ό μ°λλΌλ μκ·Έλ νΈλ€λ¬μ μν΄ μ€λ¨λ ν μ λ μ¬μμλμ§ μλλ€.
flags
κ° TIMER_ABSTIME
μΌ λλ remain
μΈμλ₯Ό μ μ°λ©° νμλ μλ€. (μ λ μκ° μ λ€κΈ°λ κ°μ request
μΈμλ₯Ό μ¨μ μ¬μμν μ μλ€.)
POSIX.1μμλ clock_nanosleep()
μ΄ μκ·Έλ μ²λ¦¬ λ°©μμ΄λ μκ·Έλ λ§μ€ν¬μ μ΄λ€ μν₯λ λΌμΉμ§ μλλ€κ³ λͺ
μΈνλ€.
POSIX.1μμλ clock_settime(2)μ ν΅ν΄ CLOCK_REALTIME
μ κ°μ λ°κΎΌ νμλ μ λμ clock_nanosleep()
μ λΈλ‘ λ μ€λ λκ° κΉ¨μ΄λ μμ μ μ ν΄λ κ°μΌλ‘ μ ν΄μΌ νλ€κ³ λͺ
μΈνκ³ μλ€. μ ν΄λ κ°μ΄ μλ©΄ μκ° λμ λμ΄κ°λ€λ©΄ clock_nanosleep()
νΈμΆμ΄ μ¦μ λ°νλλ€.
POSIX.1μμλ clock_settime(2)μ ν΅ν΄ CLOCK_REALTIME
μ κ°μ λ°κΎΈλ κ²μ΄ μλμ clock_nanosleep()
μ λΈλ‘ λ μ€λ λμ μ΄λ€ μν₯λ λΌμΉμ§ μμμΌ νλ€κ³ λͺ
μΈνκ³ μλ€.
clock_getres(2), nanosleep(2), restart_syscall(2), timer_create(2), sleep(3), usleep(3), time(7)
2017-09-15