从 system() 命令启动二进制文件时,SIGUSR1 被忽略

从 system() 命令启动二进制文件时,SIGUSR1 被忽略

我尝试将 SIGUSR1 与计时器一起使用。从命令行启动二进制文件时,它工作正常。但如果我从其他应用程序通过 system() 命令启动相同的二进制文件,则 SIGUSR1 将被忽略。

我不想忽略 SIGUSR1 信号. 如何使用 signal() 或 sigaction() 解决此问题?

答案1

记住环境(包括阻塞或禁用的信号)是从父进程继承的。

如果您正在谈论您控制的二进制可执行文件,那么您可以对其进行编码以(重新)启用任何和所有信号。

如果没有的话,那么也许您可以编写一个包装程序,运行该程序来启用适当的信号并启动可执行文件。

相关内容