在execvp()之前将忽略的信号设置为SIG_DFL

时间:2012-08-22 12:44:09

标签: c linux signals posix execvp

我正在编写一个库,我在fork()和execvp()中启动另一个程序。据我所知,execvX()将“自定义”信号处理程序重置为SIG_DFL,但它没有将任何被忽略的信号处理程序设置为SIG_DFL。

请记住它是一个库,我无法控制用户对信号的处理,将忽略信号的信号处理程序设置为SIG_DFL是个好主意吗?

如果是,是否有某种方法可以立即将所有信号处理程序设置为SIG_DFL?我是否必须遍历所有信号编号?在这种情况下,我如何找到最后可能的信号编号?我已经看到在/ bitsum.h中有_NSIG。这是POSIX的常量部分还是特定于Linux?

感谢。

1 个答案:

答案 0 :(得分:1)

根据execve(2)手册页,

  

正在捕获的任何信号的处置都会重置为                 默认(signal(7))。

signal(7)手册页添加:

  

execve(2)期间,处理信号的处置是          重置为默认值;被忽略信号的处理方式保持不变。

因此,您需要在execve

之前逐个重置您要忽略或默认的信号

我在NSIG

中看到/usr/include/signal.h常量
相关问题