我尝试将 SIGUSR1 与计时器一起使用。从命令行启动二进制文件时,它工作正常。但如果我从其他应用程序通过 system() 命令启动相同的二进制文件,则 SIGUSR1 将被忽略。
我不想忽略 SIGUSR1 信号. 如何使用 signal() 或 sigaction() 解决此问题?
答案1
记住环境(包括阻塞或禁用的信号)是从父进程继承的。
如果您正在谈论您控制的二进制可执行文件,那么您可以对其进行编码以(重新)启用任何和所有信号。
如果没有的话,那么也许您可以编写一个包装程序,运行该程序来启用适当的信号并启动可执行文件。