我想捕获SIGINT(CTRL + C)。 我希望当用户键入CTRL + C它会杀死子进程,但父进程将正常继续。 当我在我的程序中有子进程时它工作正常,但是当我没有子进程时,我得到“分段错误”。分段故障信号处理程序sigint
我已经这样做了:
void sig_handler(int signo);
//========================================
int main()
{
// CTRL + C => SIGINT handler
struct sigaction act;
act.sa_handler = sig_handler;
sigfillset(&act.sa_mask);
act.sa_flags = 0;
// Catch the signal
sigaction(SIGINT, &act, NULL);
...
// done some checks and then fork a child.
}
// SIGINT handler
void sig_handler(int signo)
{
// dont know what to write here
}
分叉你的子进程之前获取当前的进程ID,然后把它分叉你的孩子并获得它的进程ID,然后当处理信号时检查ctrl c是否为父进程ID,然后根据它实现你的逻辑。 – FZE
你在哪行代码中得到了分段错误? –