CLOCK_GETCPUCLOCKID - Linux手册页
时间:2019-08-20 18:00:02 来源:igfitidea点击:
Linux程序员手册 第3部分
更新日期: 2020-06-09
名称
clock_getcpuclockid-获取进程CPU时间时钟的ID
语法
#包括
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,并将其返回到clockid指向的位置。如果pid为零,则返回调用进程的CPU时间时钟的时钟ID。
返回值
成功时,clock_getcpuclockid()返回0;否则,返回0。如果出现错误,它将返回ERRORS中列出的正错误号之一。
错误说明
- ENOSYS
- 内核不支持获取另一个进程的每个进程的CPU时间时钟,并且pid不指定调用进程。
- EPERM
- 调用者无权访问pid指定的进程的CPU时间时钟。 (在POSIX.1-2001中指定;在Linux上不会发生,除非内核不支持获取另一个进程的每个进程的CPU时间时钟。)
- ESRCH
- ID pid没有进程。
版本
从2.2版开始,glibc中提供了clock_getcpuclockid()函数。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
clock_getcpuclockid() | Thread safety | 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 # Show CPU clock of init process CPU-time clock for PID 1 is 2.213466748 seconds
Program source
#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)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。