我有一个进程(称为进程A),它启动进程B的几个实例。在gdb中调试进程A时,如果我使用Ctrl + C暂停带有SIGINT的进程A,则所有子进程B都被杀死一旦我完成了调试过程,我就必须重新启动整个事情A.有没有办法阻止gdb向子进程发送SIGINT,从而杀死它们(至少我认为' s是什么&# 39; s正在发生)?如果是这样,它是什么?
请注意,我没有进程B的源代码(因此我无法添加一些代码来处理SIGINT)。进程接口使用C ++。
答案 0 :(得分:1)
尝试
signal(SIGINT, SIG_IGN);
在A.根据man signal
(强调我的),
通过fork(2)创建的子项继承其父级信号处置的副本。在execve(2)期间,处理信号的处置被重置为默认值; 忽略信号的处置保持不变。