我想使用 select()
函数等待 1 秒,因为我的程序使用信号来控制东西,所以 sleep()
会过早返回。奇怪的是,当使用 select()
时,它也会过早地返回。
我是这样调用select的
struct timeval timeout;
timeout.tv_sec = 10;
timeout.tv_usec = 1000000;
select (0 ,NULL, NULL, NULL, &timeout);
但是每当信号到达时,它就会返回(我正在为信号使用纳秒计时器)
谁知道为什么?
最佳答案
尝试这样的事情:
struct timespec timeout;
timeout.tv_sec = 10;
timeout.tv_nsec = 0;
while (nanosleep(&timeout, &timeout) && errno == EINTR);
指向 nanosleep
的“剩余时间”指针将负责让您在 sleep 被打断时以必要的剩余时间重新开始 sleep 。
关于c - 使用 sleep 和 select 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5198560/