原型:
#include <time.h> int nanosleep(const struct timespec *req, struct timespec *rem);
说明: 此函数将调用进程挂起,直到 req 里所指的时间结束。req 是 struct timespec 结构体的指针。struct timespec 结构体定义如下:
struct timespec { time_t tv_sec; /* 秒 */ long tv_nsec; /* 纳秒 */ };
如果在调用 nanosleep() 睡眠期间被信号所中断,nanosleep() 就会返回 -1,同时设置 errno 为 EINTR,并且会将剩余的时间写入由 rem 所指向同样时 struct timespec 类型的结构体中,如果 rem 为 NULL,就不会记录剩余时间。当信号处理完毕时,还会继续调用 nanosleep() 直到剩余时间用完为止。
测试程序:
; ) ; ); ); ); ; ; ) ); ); }
运行与输出:
$ ./nanosleep 5 testing-1 testing-2 ^C测试-2被信号中断,剩余时间为: 4秒120263116纳秒 ^C测试-2被信号中断,剩余时间为: 3秒440359866纳秒 ^C测试-2被信号中断,剩余时间为: 2秒320431341纳秒 ^C测试-2被信号中断,剩余时间为: 1秒320495448纳秒 testing-3 ... ...
上面,^C 表示按下 Ctrl + c 组合键,发出中断函数信号。
|