我有一个 C++ 程序,它使用信号处理多个信号以执行不同的操作:
signal(SIGHUP, signal_handler);
Run Code Online (Sandbox Code Playgroud)
我想扩展这个信号处理以允许我向我的程序发送不同的动作请求,并发现使用 sigaction 我将能够接收额外的信息和信号:
sigaction(SIGUSR1, &act, 0);
Run Code Online (Sandbox Code Playgroud)
对于我所能找到的,我能够从其他程序发送这种类型的信号,在 sigval 对象上设置额外的信息,这样我就知道在接收端,程序被要求做什么。
我想知道的是如何通过 bash 上的 shell 脚本发送这种类型的信号信息。是否可以?我可以使用向我的程序发送信号,kill -S SIGHUP [PID]
但我没有找到使用 发送额外参数的方法kill
,所以我想知道 bash 是否有任何命令可以模拟 sigaction / sigqueue 行为,允许我向我的应用程序发送信号而不必开发另一个应用程序来完成这项工作。
您的信息似乎已过时。从我的sigaction
手册页:
无证。 在引入 SA_SIGINFO 之前,还可以获得一些附加信息,即通过使用带有 struct sigcontext 类型的第二个参数的 sa_handler。这种用法现在已经过时了。