%20%E5%91%BD%E4%BB%A4%E5%90%AF%E5%8A%A8%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E6%97%B6%EF%BC%8CSIGUSR1%20%E8%A2%AB%E5%BF%BD%E7%95%A5.png)
我尝试将 SIGUSR1 与计时器一起使用。从命令行启动二进制文件时,它工作正常。但如果我从其他应用程序通过 system() 命令启动相同的二进制文件,则 SIGUSR1 将被忽略。
我不想忽略 SIGUSR1 信号. 如何使用 signal() 或 sigaction() 解决此问题?
答案1
记住环境(包括阻塞或禁用的信号)是从父进程继承的。
如果您正在谈论您控制的二进制可执行文件,那么您可以对其进行编码以(重新)启用任何和所有信号。
如果没有的话,那么也许您可以编写一个包装程序,运行该程序来启用适当的信号并启动可执行文件。