Skip to content

getitimer

果冻虾仁 edited this page Aug 20, 2017 · 4 revisions

函数原型

#include <sys/time.h>

int getitimer(int which, struct itimerval *curr_value);
int setitimer(int which, const struct itimerval *new_value,
             struct itimerval *old_value);

参数

which

指定使用哪一种计时器。Linux 操作系统为每一个进程提供了 3 个内部间隔计时器:

  • ITIMER_REAL:减少实际时间.到时的时候发出 SIGALRM 信号。
  • ITIMER_VIRTUAL:减少有效时间(进程执行的时间)。产生 SIGVTALRM 信号。
  • ITIMER_PROF:减少进程的有效时间和系统时间(为进程调度用的时间)。产生 SIGPROF 信号。

后两者经常结合使用用来计算系统内核时间和用户时间

getitimer

获取当前的计时器。

setitimer

设置新计时器new_value,如果原计时器不为空,则保存到old_value中。

结构体itimerval和timeval

struct itimerval {
       struct timeval it_interval; /* 间隔,it_value为0以后会重置为it_interval */
       struct timeval it_value;    /* 当前值 */
};

struct timeval {
       time_t      tv_sec;         /* 秒 */
       suseconds_t tv_usec;        /* 微秒 */
};

Linux环境编程API

C语言API包含部分标准C的API、POSIX标准的系统编程API(一些Linux独有的系统API会单独注明)。

头文件源码

大部分头文件源码在/usr/include目录下。

安装man手册

因为涉及到大量的POSIX编程。所以最好下载POSIX函数的man手册。

Ubuntu

apt-get install manpages-posix        
apt-get install manpages-posix-dev

默认安装了manpages-dev,所以不装POSIX的man手册是可以查看绝大部分API的。
但是不装的话,有些API是不能看到的,比如posix_spawn函数。

CentOS

yum install man-pages.noarch

关于目录

左侧的目录并非以函数为索引依据,主要是以系统的man手册页面为索引依据。
比如exec里面包含6个函数、pipe里面包含pipe()和pipe2()两个函数,但是它们都是属于一个man页面中。

Clone this wiki locally