APUE说关于sleep()
此功能
sleep()
导致调用进程被挂起 直到其中一个
- 以秒为单位指定的挂钟时间已过去。
- 进程捕获了信号,信号处理程序返回。
第一种情况是否通过向流程本身发送一些特定信号来起作用?如果是,信号是什么?
alarm()
可以在特定时间段后向呼叫进程发送信号SIGALARM
,这就是为什么我想知道sleep()
是否以相同的方式工作的原因。
sleep()
是否将调用过程的状态更改为与sigsuspend()
更改为相同的状态?这两个功能更改为哪个过程状态?
仅通过信号唤醒挂起的进程是否正确?这就是我有这个问题的原因。
谢谢。
答案 0 :(得分:2)
Linux内核在使用用户信号来更改进程状态时绝对不需要。因此,仅出于满足用户库功能的要求而执行信号发射。
作为sleep
函数的文档,它没有说在睡眠结束后会发出任何信号,因此内核在这种情况下不使用信号。
仅通过信号唤醒暂停的进程是否正确?
是的,用户代码可能仅通过向其发送信号来唤醒睡眠过程。对于大多数不可运行的过程状态也是如此。