clock_getcpuclockid(3) - wariua/manpages-ko GitHub Wiki
clock_getcpuclockid - νλ‘μΈμ€ CPU μκ° ν΄λμ ID μ»κΈ°
#include <time.h>
int clock_getcpuclockid(pid_t pid, clockid_t *clock_id);
-lrt
λ‘ λ§ν¬ (glibc λ²μ 2.17 μ μμλ§).
glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
-
clock_getcpuclockid()
: _POSIX_C_SOURCE >= 200112L
clock_getcpuclockid()
ν¨μλ IDκ° pid
μΈ νλ‘μΈμ€μ CPU μκ° ν΄λμ IDλ₯Ό μ»μ΄μ clock_id
κ° κ°λ¦¬ν€λ μμΉλ‘ λ°ννλ€. pid
κ° 0μ΄λ©΄ νΈμΆ νλ‘μΈμ€μ CPU μκ° ν΄λμ ν΄λ IDλ₯Ό λ°ννλ€.
μ±κ³΅ μ clock_getcpuclockid()
λ 0μ λ°ννλ€. μ€λ₯ μ ERRORS μ μ λμ΄λ μμ μ€λ₯ λ²νΈ μ€ νλλ₯Ό λ°ννλ€.
ENOSYS
- 컀λμ΄ λ€λ₯Έ νλ‘μΈμ€μ νλ‘μΈμ€λ³ CPU μκ° ν΄λ μ»κΈ°λ₯Ό μ§μνμ§ μλλ°
pid
κ° νΈμΆ νλ‘μΈμ€λ₯Ό μ§μ νκ³ μμ§ μλ€. EPERM
-
pid
λ‘ μ§μ ν νλ‘μΈμ€μ CPU μκ° ν΄λμ μ κ·Όν κΆνμ νΈμΆμκ° κ°μ§κ³ μμ§ μλ€. (POSIX.1-2001μμ λͺ μΈν¨. 리λ μ€μμλ 컀λμ΄ λ€λ₯Έ νλ‘μΈμ€μ νλ‘μΈμ€λ³ CPU μκ° ν΄λ μ»κΈ°λ₯Ό μ§μνμ§ μλ κ²½μ°κ° μλλΌλ©΄ λ°μνμ§ μμ.) ESRCH
- IDκ°
pid
μΈ νλ‘μΈμ€κ° μλ€.
glibc λ²μ 2.2λΆν° clock_getcpuclockid()
ν¨μκ° μ¬μ© κ°λ₯νλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
μΈν°νμ΄μ€ | μμ± | κ° |
---|---|---|
clock_getcpuclockid() |
μ€λ λ μμ μ± | MT-Safe |
POSIX.1-2001, POSIX.1-2008.
pid
κ° 0μΈ clock_getcpuclockid()
νΈμΆλ‘ μ»μ ν΄λ IDλ₯Ό clock_gettime(2)μ νΈμΆν λ μ¬μ©νλ κ²μ ν΄λ ID CLOCK_PROCESS_CPUTIME_ID
λ₯Ό μ°λ κ²κ³Ό κ°λ€.
μλμ μμ νλ‘κ·Έλ¨μ λͺ λ ΉνμΌλ‘ μ€ IDλ₯Ό κ°μ§ νλ‘μΈμ€μ CPU μκ° ν΄λ IDλ₯Ό μ»μ λ€μ clock_gettime(2)μ μ΄μ©ν΄ κ·Έ ν΄λμ μκ°μ μ»λλ€. λμ μλ λ€μκ³Ό κ°λ€.
$ ./a.out 1 # init νλ‘μΈμ€μ CPU ν΄λ 보기
CPU-time clock for PID 1 is 2.213466748 seconds
#define _XOPEN_SOURCE 600
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
int
main(int argc, char *argv[])
{
clockid_t clockid;
struct timespec ts;
if (argc != 2) {
fprintf(stderr, "%s <process-ID>\n", argv[0]);
exit(EXIT_FAILURE);
}
if (clock_getcpuclockid(atoi(argv[1]), &clockid) != 0) {
perror("clock_getcpuclockid");
exit(EXIT_FAILURE);
}
if (clock_gettime(clockid, &ts) == -1) {
perror("clock_gettime");
exit(EXIT_FAILURE);
}
printf("CPU-time clock for PID %s is %ld.%09ld seconds\n",
argv[1], (long) ts.tv_sec, (long) ts.tv_nsec);
exit(EXIT_SUCCESS);
}
clock_getres(2), timer_create(2), pthread_getcpuclockid(3), time(7)
2019-03-06