从信号处理程序调用系统("命令")

时间:2014-09-09 06:24:07

标签: command signals

在信号处理程序中,我看到system()用于调用一些shell命令,比如

void
sig_handler(int signum) {
   system("command1");
   system("command2");
   system("command3");
   signal(signum, SIG_DFL);
}

以这种方式在信号处理程序(绑定到SIGSEGVSIGABRTSIGBUS ...)中进行调用是否安全,然后调用默认处理程序? 或者它取决于被调用的命令

1 个答案:

答案 0 :(得分:1)

system调用未记录为从信号处理程序调用是安全的(或者至少我找不到这样的文档),所以我得出结论,这段代码不能保证是安全的。< / p>

但是,forkexecvewaitpidsignal都记录在案是安全的,所以我认为该代码的功能原则上应该是安全的,如果使用fork / exec / waitpid而不是system来实施。