How to prevent gdb to send Interrupt signals to child processes


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users How to prevent gdb to send Interrupt signals to child processes
# 1  
Old 01-22-2009
How to prevent gdb to send Interrupt signals to child processes

Hi,

I have a program which invokes child processes and communicates with the processes. When I run the program under gdb and say interrupt, all the child processes are dying. Here I am not interested in debugging the child processes. But I don't want my child processes to be killed as my parent process dies as soon as the child process is killed. Also I have no access to the child process code for any modifications. My assumption is that gdb sends interrupt signals to child processes because of which they are dying (but I am not sure about this).

I have tried "handle sigint nopass" on gdb. But it did not work for me.Please let me know if there is any way to prevent gdb to send interrupt signals to child processes.

Thanks in advance,
klnarayana
# 2  
Old 01-29-2009
The children should terminate when the parent does. If the children die, the parent normally gets notified with a SIGCHLD signal. However, by default, this signal is ignored.It could be in your code you are trying to handle it or have reset it to terminate your own process. Look for SIGCHLD in your code.

You should also tell your own process to handle or ignore SIGINT so that your process doesn't get killed when CTRL-C is hit. Try adding this early in the initialization of your program:
Code:
signal(SIG_IGN, SIGINT);

# 3  
Old 01-30-2009
Hi,

Thanks for your help.

My parent process just provides me the gui to interact with the child process. Hence I am not bothered about my parent process dying. However I am very much interested in cotrolling my child process through the parent process.

My parent process launches xterm window through which I can communicate with my child process. So when I say interrupt through gdb, the signal is being sent to xterm window. The xterm window is not able to handle the interrupt signal and hence dying. Here I have no control over xterm window or my child process.

Can you suggest me some other solution which can be implemented from parent process or from gdb side?

Thanks once again for the reply.

Regards,
lakshminarayana
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Get all child processes of a process

is there a universal way of getting the children of a particular process? i'm looking for a solution that works across different OSes...linux, aix, sunos, hpux. i did a search online and i kept finding answers that were specific to Linux..i.e. pstree. i want to be able to specify a process... (2 Replies)
Discussion started by: SkySmart
2 Replies

2. Programming

sending signals between two processes

Hello, I have two programs: server.c and client.c I need to send signal from client to server. As far as I know I need to use kill() function. To use kill() function I have to know the pid the second process. How can I send pid from process to process(both are written in separate files). ... (3 Replies)
Discussion started by: fasolens
3 Replies

3. Programming

How to block or ignore signals from certain processes?

We know that a process can block certain signals by call sigprocmask(), but sometimes we may want to block signals from certain processes for safety concerning. For example, a system may have a process management daemon, and it will response to certain signals from certain processes managed by... (4 Replies)
Discussion started by: aaronwong
4 Replies

4. UNIX for Advanced & Expert Users

killing all child processes

Hi, Is there a way I can kill all the child processes of a process, given its process id. Many thanks in advance. J. (1 Reply)
Discussion started by: superuser84
1 Replies

5. Shell Programming and Scripting

fork() and child processes

Hello, How many child processes are actually created when running this code ? #include <signal.h> #include <stdio.h> int main () { int i ; setpgrp () ; for (i = 0; i < 10; i++) { if (fork () == 0) { if ( i & 1 ) setpgrp () ; printf ("Child id: %2d, group: %2d\n",... (1 Reply)
Discussion started by: green_dot
1 Replies

6. Programming

fork() and child processes

Hello, How many child processes are actually created when running this code ? #include <signal.h> #include <stdio.h> int main () { int i ; setpgrp () ; for (i = 0; i < 10; i++) { if (fork () == 0) { if ( i & 1 ) setpgrp () ; printf ("Child id: %2d, group: %2d\n", getpid(),... (0 Replies)
Discussion started by: green_dot
0 Replies

7. Shell Programming and Scripting

Parent/Child Processes

Hello. I have a global function name func1() that I am sourcing in from script A. I call the function from script B. Is there a way to find out which script called func1() dynamically so that the func1() can report it in the event there are errors? Thanks (2 Replies)
Discussion started by: yoi2hot4ya
2 Replies

8. UNIX for Advanced & Expert Users

gdb to child process

Hi, I want to debug a child process which is forked from other process. Whenever I try to attach the pid of child process to gbd, the process gets killed and the parent process starts a new child process. any idea what could be the reason. In general how can i debug a child process... (4 Replies)
Discussion started by: shriashishpatil
4 Replies

9. Programming

Controlling child processes

Hello all, I am trying to create n child processes and control them from a parent process; say make child 3 print its pid and then child 5 do the same and some other stuff. Is there a way to accomplishing this after all the child processes are created via a call to fork(). Thank you, FG (23 Replies)
Discussion started by: forumGuy
23 Replies

10. UNIX for Dummies Questions & Answers

what are parent and child processes all about?

I don't follow what these are... this is what my text says... "When a process is started, a duplicate of that process is created. This new process is called the child and the process that created it is called the parent. The child process then replaces the copy for the code the parent... (1 Reply)
Discussion started by: xyyz
1 Replies
Login or Register to Ask a Question