c - sigaction 优先于信号功能吗?
问题描述
以下来自信号的手册页
signal() 的行为因 UNIX 版本而异,并且在历史上因 Linux 的不同版本而异。避免使用它:改用 sigaction(2)。请参阅下面的可移植性。
这是否意味着我们应该始终使用sigaction
call 而不是 using signal
?
解决方案
是的。您已经确定了 Linux 参考,POSIX 也说了同样的话:
sigaction()函数取代了signal()函数,应该优先使用。
sigaction通过强制用户做出有关系统调用中断 (SA_RESTART)、处理程序中断 ( , SA_NODEFER)、子处理 (SA_NOCLD[WAIT|STOP])、处置永久性 (SA_RESETHAND) 等的决定来解决信号中的历史不一致问题。sa_mask
推荐阅读
- python - 执行功能时按下键
- file - 从其他文件加载 ocaml 中的类型
- python - input().strip().split() 和 input().split() 有什么区别?
- python - OpenCV imwrite() / imread() 函数是否以任何方式修改图像?
- javascript - 如何将 UTC 字符串转换为 Date 对象?
- windows - 是否有一个 Windows 事件可以判断 Windows 10 是否打开了演示模式?
- forms - Symfony 4:为与多个实体有关系的实体创建表单
- python - 删除用于绘制 matplotlib 图的撇号
- clojure - 动态计算 gen-class
- java - mockito doThrow 返回 null 而不是引发异常