首页 > 解决方案 > sigaction 优先于信号功能吗?

问题描述

以下来自信号的手册页

signal() 的行为因 UNIX 版本而异,并且在历史上因 Linux 的不同版本而异。避免使用它:改用 sigaction(2)。请参阅下面的可移植性。

这是否意味着我们应该始终使用sigactioncall 而不是 using signal

标签: csignalssigaction

解决方案


是的。您已经确定了 Linux 参考,POSIX 也说了同样的话

sigaction()函数取代了signal()函数,应该优先使用。

sigaction通过强制用户做出有关系统调用中断 (SA_RESTART)、处理程序中断 ( , SA_NODEFER)、子处理 (SA_NOCLD[WAIT|STOP])、处置永久性 (SA_RESETHAND) 等的决定来解决信号中的历史不一致问题。sa_mask


推荐阅读