我正在尝试实现一个shell程序,我希望shell程序忽略SIG_INT(ctrl + c).但是在我的程序中,孩子也忽略了SIG_INT信号,因为exec应该将子进程带到另一个程序,并且该程序应该默认处理SIG_INT信号.我应该怎么做才能在按下ctrl + c时终止子进程.
新编辑:在我的子进程块中放置信号(Certain_signal,SIG_DFL)后,我的代码运行正常.但我仍然对这项工作的方式感到困惑.这是否意味着信号和信号处理都可以通过执行命令传播?
int main(void){
signal(SIG_INT, SIG_IGN);
int result = fork();
if(result == 0){
//child:
//exec some programs
}
else{
waitpid(result);
//do something
}
Run Code Online (Sandbox Code Playgroud)
}