c - linux 中的闹钟和 sleep

标签 c linux unix

有人担心 sleep()alarm() 的组合吗?我一直听说这样做很糟糕,因为它们可能都依赖同一个计时器并相互冲突。

我认为使用 alarm() 容易出错,希望看到不同的解决方案或任何想法,以便我可以使用与 sleep 非常兼容的东西从我的代码中删除警报。

最佳答案

当您使用 sleep ,进程进入休眠状态的时间以毫秒为单位,并且 alarm将返回 sleep 之后的剩余秒数.一个alarm在提到的时间后终止进程。

是的,sleepalarm将使用相同的计时器。因此,我们有责任计算 sleep() 时的剩余秒数。在 alarm() 之后发生.

例如: 如果你使用

alarm(5);---------------> An alarm is set for 5 seconds.

sleep(3);---------------> Process goes to sleep state for 3 seconds.

alarm(7);---------------> This alarm returns the seconds remaining after sleep is set i.e it returns 2.

然后 alarm设置为 7 秒。当进程时间超过 12 秒时,进程在 12 秒后完全终止。

如果sleep时间比较多,

示例 2:

alarm(5);

sleep(7);

然后进程在 5 秒后终止。

关于c - linux 中的闹钟和 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18999278/

相关文章:

Python:与 *nix 中正在运行的进程的 STDIN/OUT 交互

c - 分配二维字符数组

c - 错误 : unknown register name 'r3' in 'asm' , 中的错误

c - C 中带有 or 的 if 语句

c - 为什么在 C 中调用函数后变量的值会丢失?

linux - 每次打开新的终端窗口时,如何自动记录终端 session ?

linux - Flutter 作为 Linux(非 Android)上的 GUI

php - 影子密码

c++ - SDL 中的 Fill_Rect

linux - 自动 qsub 作业完成状态通知