clock_getcpuclockid

Section: C Library Functions (3)
Updated: 2025-05-17
Index JM Home Page roff page
 

名前

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

ライブラリ

glibc 2.17 から標準 C ライブラリ (libc,\ -lc)

glibc 2.17 より前は、Real-time library (librt,\ -lrt)  

書式

#include <time.h>

 int clock_getcpuclockid(pid_t pid, clockid_t *clockid);

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 のプロセスが存在しません。
 

属性

この節で使用されている用語の説明については、 attributes(7) を参照してください。
インターフェース属性
clock_getcpuclockid() Thread safetyMT-Safe
 

標準

POSIX.1-2008.  

履歴

glibc 2.2. POSIX.1-2001.  

注意

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 <stdlib.h>
#include <time.h>
#include <unistd.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)


 

Index

名前
ライブラリ
書式
説明
返り値
エラー
属性
標準
履歴
注意
プログラムのソース
関連項目

This document was created by man2html, using the manual pages.