linux - sleep() 是否通过在等待结束时发送一些信号来唤醒进程?
问题描述
APUE 说sleep()
此函数
sleep()
导致调用进程暂停,直到
- 以秒为单位的挂钟时间量已经过去。
- 信号被进程捕获,信号处理程序返回。
第一种情况是否通过向进程本身发送一些特定信号来工作?如果是,信号是什么?
可以在特定时间段后向调用进程alarm()
发送信号,这就是为什么我想知道是否以相同的方式工作。SIGALARM
sleep()
是否sleep()
将调用进程的状态sigsuspend()
更改为与更改相同的状态?这两个函数更改为哪个进程状态?
暂停的进程只能被信号唤醒是否正确?这就是我有这个问题的原因。
谢谢。
解决方案
Linux内核完全不需要使用用户信号来改变进程的状态。因此,发出信号只是为了满足用户库的功能要求。
由于sleep
函数文档没有说在睡眠结束后会发出任何信号,因此内核在这种情况下不使用信号。
暂停的进程只能被信号唤醒是否正确?
是的,用户代码只能通过向睡眠进程发送信号来唤醒它。对于大多数不可运行的进程状态也是如此。
推荐阅读
- r - 使用geom_bar制作条形图,y比例与数据不匹配
- json - 如何对 JSON 转换进行子串化?JOLT“范围”如何工作?
- validation - 基于 ASP.NET Core MVC 中的控制器操作的对象状态验证
- c# - 缓存类 - 需要设计建议
- python - 如何在另一个函数中调用一个函数进行计算?
- c# - 系统或配置设置的外部控制 (CWE ID 15)
- elasticsearch - 单个查询中的弹性搜索 1000 个布尔条件未给出结果
- amazon-web-services - 在 Glue 中使用 ResolveChoice
- php - 在 PHP 中识别 PDF/A 文件
- python - 外星人入侵高分和分数问题