c - kill() 是否在 C 中立即工作?还是有机会运行下一行?
问题描述
想一想,我猜信号被发送到操作系统并且程序将继续,即使信号仍然在操作系统端挂起。有人可以确认吗?
kill(this_process, signum);
printf("will line this run in any reality of the multi-verse?");
printf("or should I go to sleep?");
sleep(10);
解决方案
从 POSIX 规范kill()
如果pid的值导致为发送进程生成sig ,并且如果调用线程没有阻塞sig,并且如果没有其他线程已解除阻塞sig或正在等待sig
sigwait()
的函数,则sig或至少一个未阻塞的未阻塞信号应在返回前传递给发送线程。kill()
因此,如果您在调用时没有其他待处理kill()
的信号,则必须立即发送您发送的信号。但是,如果还有其他信号未决,则可以将该信号排队并立即传递较早的信号。
推荐阅读
- c# - 尝试使用 GDAL/OGR 打开 shapefile 时,“gdalconst_wrap”dll 丢失或无法读取
- python - 序列化字段时如何获取字符串片段(Django / DRF)
- spring - 在初始化整个上下文或执行服务器启动后,有什么方法可以初始化 spring bean?
- css - 有没有办法制作三角HR?
- python - 将日期从整数转换为日期格式
- c# - 在 while 循环中不更新值
- docker - Docker compose 不会启动 selenium 网格
- php - 表单提交奇怪的行为
- mysql - 如何使这个 sql INSERT SELECT 查询在空表上工作?
- database - 我可以在 MongoDB 中将 elemMatch 与点表示法结合使用吗?