gdb:中断运行进程而不杀死子进程

时间:2016-07-15 20:59:09

标签: c++ debugging gdb parent-child

我有一个进程(称为进程A),它启动进程B的几个实例。在gdb中调试进程A时,如果我使用Ctrl + C暂停带有SIGINT的进程A,则所有子进程B都被杀死一旦我完成了调试过程,我就必须重新启动整个事情A.有没有办法阻止gdb向子进程发送SIGINT,从而杀死它们(至少我认为' s是什么&# 39; s正在发生)?如果是这样,它是什么?

请注意,我没有进程B的源代码(因此我无法添加一些代码来处理SIGINT)。进程接口使用C ++。

1 个答案:

答案 0 :(得分:1)

尝试

    signal(SIGINT, SIG_IGN);

在A.根据man signal(强调我的),

  

通过fork(2)创建的子项继承其父级信号处置的副本。在execve(2)期间,处理信号的处置被重置为默认值; 忽略信号的处置保持不变