【发布时间】:2013-12-01 12:06:24
【问题描述】:
我有一个关于信号处理的问题。
假设我有两个程序同时运行。我称它们为程序 1 和程序 2。
我在不同的终端窗口运行它们,因为一个程序等待另一个程序启动。它们旨在继续运行,直到我在两个窗口中都按 ctrl-c。我觉得这个方法有点麻烦。所以我想做的是在其中一个程序中添加一些东西。
意思是,我可以使用 ctrl-c 来停止 program1,并且 program2 一旦知道 program1 不再活动,就会停止。我在网上查了一下,看看是否有这样的例子,或者我不知道的 C 语言中的某些部分,我遇到了信号处理。
我知道信号处理涉及使程序根据给定的信号或信号的结构进行各种执行。这是正确的使用方法还是有其他方法?
我在网上看到,如果信号是 ctrl-C,使用信号处理会在终端中弄乱 ctrl-C 命令?
如果有一些示例代码,我们也会非常感谢有关信号处理的解释。
根据给出的答案,我根据给出的内容编写了一个示例代码:
#include <signal.h>
......
......
sigset_t SIGUSR1;
sigset_t SIGUSR2;
int signal;
void trap(int signal);
......
......
void trap(int signal)
{
int signal;
signal == SIGUSR1
}
对不起,如果我写这篇文章看起来很愚蠢,但我仍然想知道它是如何工作的。
【问题讨论】:
-
如果一个程序接收到 SIGTERM,则使用
kill系统调用从该程序向另一个程序发送相同的信号。我假设您可以访问这两个程序的 pid。 -
对于 Linux/Unix:我认为最好的解决方案是如果 program1
fork和execlprogram2。那么当program2结束时,program1会得到SIGCHLD信号。在 Windows CreateProcess 和 WaitFor...
标签: c