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