linux系统编程之信号(二) 信号发送函数及不同精度的睡眠
三、setitimer 和不同精度的睡眠 1、首先来看三种不同的时间结构,如下: time_t;/* seconds */ struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }; microseconds就是微秒, nanoseconds就是纳秒。 2、三种不同精度的睡眠 unsigned int sleep(unsigned int seconds); int usleep(useconds_t usec); int nanosleep(const struct timespec *req, struct timespec *rem); 3、setitimer函数 包含头文件<sys/time.h> 功能setitimer()比alarm功能强大,会间歇性产生时钟,支持3种类型的定时器。 原型:int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue)); 参数:第一个参数which指定定时器类型;第二个参数是结构体itimerval的一个实例;第三个参数若不为空则返回先前定时unslept的时间。 返回值:成功返回0,失败返回-1。 参数 which的取值: ITIMER_REAL:经过指定的时间后,内核将发送SIGALRM信号给本进程 ITIMER_VIRTUAL :程序在用户空间执行指定的时间后,内核将发送SIGVTALRM信号给本进程 ITIMER_PROF :进程在用户空间执行和内核空间执行时,时间计数都会减少,通常与ITIMER_VIRTUAL共用,代表进程在用户空间与内核空间中运行指定时间后,内核将发送SIGPROF信号给本进程。 itimerval结构体: struct itimerval { struct timeval it_interval; /* next value */ struct timeval it_value; /* current value */ }; 其中timeval 结构体如前面所示。 (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |