Man page - clock_getcpuclockid(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

CLOCK_GETCPUCLOCKID

名 前
書 式
説 明
返 り 値
エ ラ ー
バ ー ジ ョ ン
属 性
準 拠
注 意

プ ロ グ ラ ム の ソ ー ス
関 連 項 目
こ の 文 書 に つ い て

名 前

clock_getcpuclockid - プ ロ セ ス の CPU 時 刻 の ク ロ ッ ク ID を 取 得 す る

書 式

#include <time.h>

int clock_getcpuclockid(pid_t pid , clockid_t * clockid );

-lrt と リ ン ク す る (バ ー ジ ョ ン 2.17 よ り 前 の glibc の み )

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):

clock_getcpuclockid ():

_POSIX_C_SOURCE >= 200112L

説 明

clock_getcpuclockid () 関 数 は 、 プ ロ セ ス ID が pid の プ ロ セ ス の CPU 時 刻 の ク ロ ッ ク ID を 取 得 し 、 そ の ID を clockid が 指 す 場 所 に 入 れ て 返 す 。 pid が 0 の 場 合 、 呼 び 出 し 元 の プ ロ セ ス の CPU 時 刻 の ク ロ ッ ク ID が 返 さ れ る 。

返 り 値

成 功 す る と 、 clock_getcpuclockid () は 0 を 返 す 。 エ ラ ー の 場 合 、 「 エ ラ ー 」 の 節 の リ ス ト に あ る 正 の エ ラ ー 番 号 の い ず れ か を 返 す 。

エ ラ ー

ENOSYS

カ ー ネ ル が 他 の プ ロ セ ス の プ ロ セ ス 単 位 の CPU 時 刻 の ク ロ ッ ク の 取 得 に 対 応 し て お ら ず 、 か つ pid が 呼 び 出 し 元 の プ ロ セ ス を 指 し て い な か っ た 。

EPERM

呼 び 出 し 元 プ ロ セ ス が pid で 指 定 さ れ た プ ロ セ ス の CPU 時 刻 の ク ロ ッ ク に ア ク セ ス す る 許 可 を 持 っ て い な か っ た 。 (POSIX.1-2001 で 規 定 さ れ て い る 。 カ ー ネ ル が 他 の プ ロ セ ス の プ ロ セ ス 単 位 の CPU 時 刻 の ク ロ ッ ク の 取 得 に 対 応 し て い な い 場 合 に は 、 こ の エ ラ ー は 発 生 し な い 。 )

ESRCH

ID が pid の プ ロ セ ス が 存 在 し な い 。

バ ー ジ ョ ン

clock_getcpuclockid () 関 数 は glibc バ ー ジ ョ ン 2.2 以 降 で 利 用 可 能 で あ る 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-40935-1.png

準 拠

POSIX.1-2001, POSIX.1-2008.

注 意

pid に 0 を 指 定 し て clock_getcpuclockid () を 呼 び 出 し て 得 ら れ た ク ロ ッ ク ID を 引 数 と し て clock_gettime (2) の 呼 び 出 す の は 、 ク ロ ッ ク ID CLOCK_PROCESS_CPUTIME_ID を 使 っ て clock_gettime (2) の 呼 び 出 す の と 同 じ で あ る 。

以 下 の サ ン プ ル プ ロ グ ラ ム は 、 コ マ ン ド ラ イ ン で 指 定 さ れ た ID を 持 つ プ ロ セ ス の CPU 時 刻 の ク ロ ッ ク ID を 取 得 し 、 clock_gettime (2) を 使 っ て そ の ク ロ ッ ク の 時 刻 を 取 得 す る 。 以 下 は 実 行 例 で あ る 。

$ ./a.out 1 # Show CPU clock of init process
CPU-time clock for PID 1 is 2.213466748 seconds

プ ロ グ ラ ム の ソ ー ス

#define _XOPEN_SOURCE 600
#include <stdint.h>
#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 %jd.%09ld seconds\n",
argv[1], (intmax_t) ts.tv_sec, ts.tv_nsec);
exit(EXIT_SUCCESS);
}

関 連 項 目

clock_getres (2), timer_create (2), pthread_getcpuclockid (3), time (7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。