signal between parent process and child process


 
Thread Tools Search this Thread
Homework and Emergencies Emergency UNIX and Linux Support signal between parent process and child process
# 1  
Old 07-18-2011
signal between parent process and child process

Hello, everyone.
Here's a program:
Code:
pid_t pid = fork();

if (0 == pid) // child process
{
     execvp ...;
}

I send a signal (such as SIGINT) to the parent process, the child process receive the signal as well as the parent process.

However I don't want to child process to receive the signal when I send the parent process a signal. And the child process has its only signal hanlder to handle a signal such as SIGINT.
How can I do? I've googled, no answer so far.
Waiting online!!! Thanks in advance!!!

Last edited by vbe; 08-12-2011 at 09:48 AM..
# 2  
Old 08-12-2011
Just in case your problem isn't solved yet:

If you want to isolate a child process from signals to the parent, you have to use setpgrp to create a new process group, like:

Code:
pid_t pid = fork();

if (0 == pid) // child process
{
     setpgrp();
     execvp ...;
}

This way, a SIGINT or SIGHUP to the parent process won't reach the child anymore.
This User Gave Thanks to hergp For This Post:
# 3  
Old 08-19-2011
Quote:
Originally Posted by hergp
Just in case your problem isn't solved yet:

If you want to isolate a child process from signals to the parent, you have to use setpgrp to create a new process group, like:

Code:
pid_t pid = fork();

if (0 == pid) // child process
{
     setpgrp();
     execvp ...;
}

This way, a SIGINT or SIGHUP to the parent process won't reach the child anymore.
Yeah, you're right. My problem has solved. Thanks!
I'm not so familiar with unix/linux. At first, I waited a long time for the answer. No body answers or knowns, then I posted the question in another famous forum in my country, I got the the same answer with yours. Thanks any way.
[IMG]chrome://livemargins/skin/monitor-background-horizontal.png[/IMG] [IMG]chrome://livemargins/skin/monitor-background-vertical.png[/IMG] [IMG]chrome://livemargins/skin/monitor-play-button.png[/IMG]
# 4  
Old 10-10-2011
Can somebody please tell me the output of this program?

main()
{
int i;
setpgrp();
for(i=0;i,10;i++)
{
if(fork()==0)
{
stepgrp();
pause();
}
if(fork()==0)
pause();
}
kill(0, SIGINT);
}
# 5  
Old 10-10-2011
Quote:
Originally Posted by Pallavi Tiwari
Can somebody please tell me the output of this program?

main()
{
int i;
setpgrp();
for(i=0;i,10;i++)
{
if(fork()==0)
{
stepgrp();
pause();
}
if(fork()==0)
pause();
}
kill(0, SIGINT);
}

The first child process will still be alive when the parent process kills itself.
(ps: threre are serval errors in your program, but no big deal, I got you)
# 6  
Old 10-11-2011
Thanks Jackliang..
Can you please verify if the below comments are correct for
the above program :
"The statement setpgrp(); parents sets a separate group
number. Then the group of statements within the for loop
will create 20 Childs using fork() statement.
One set of Childs(10 childs will be created by the first if
statement And the Childs created by this if statement will
create their own Group and will be paused until receives any
signal by some other Process to resume the execution.
And the other set of Childs(10 Childs) will be created by the
second if statement and all the childs created by the second
if statement will also be paused to until receives any signal
by some other Process to resume the execution.
The statement kill(0, SIGINT); the parent process will send
the kill signal to all the Child processes belongs to the same
group as parent, hence the Childs created by the first if
statement would remain as it is as don’t have the same
group as parent process and the Childs created by the
second if statement will be terminated on receiving this kill
signal."
# 7  
Old 10-11-2011
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How make parent to wait from child process?

Hi all, I am starting mgen5 for sometime depends on input from a file, in a child process. now I want to make parent to wait in this child process till mgen5 finishes, or timeout happens. could anyone please tell me how to make parent to wait in child process in shell script? thanks... (2 Replies)
Discussion started by: girijajoshi
2 Replies

2. Shell Programming and Scripting

forking a child process and kill its parent to show that child process has init() as its parent

Hi everyone i am very new to linux , working on bash shell. I am trying to solve the given problem 1. Create a process and then create children using fork 2. Check the Status of the application for successful running. 3. Kill all the process(threads) except parent and first child... (2 Replies)
Discussion started by: vizz_k
2 Replies

3. Programming

Parent process starts before the child using signal, in C

Hi, i want that the parent process start before the child, this code doesn't work, if the child start before the parent it wait for signal, then the father send the signal SIGALRM and the child catch it and call printf; else the father call printf and send the signal to the child that call its... (1 Reply)
Discussion started by: blob84
1 Replies

4. Programming

how can i make that a process child send a signal?

I'm trying to do a program that makes activate an signal (SINGALARM) when the next child of a son appears but this not works. I have to caught the next child o the other (pid), to send a singnal which inform a menssage. It's anything worng in the code? thanks. the code: #include... (2 Replies)
Discussion started by: marmaster
2 Replies

5. Shell Programming and Scripting

[KSH/Bash] Starting a parent process from a child process?

Hey all, I need to launch a script from within 2 other scripts that can run independently of the two parent scripts... Im having a hard time doing this, if anyone knows how please let me know. More detail. ScriptA (bash), ScriptB (ksh), ScriptC (bash) ScriptA, launches ScriptB ScirptB,... (7 Replies)
Discussion started by: trey85stang
7 Replies

6. UNIX for Dummies Questions & Answers

Sending signal from child to parent process!

Hi All, I facing a problem in handling signals between parent process communication. I am trying to send a signal(SIGINT) from child to parent. I am using kill function to do so and I am trying to read the signal using sigaction(). But the program is ending abruptly and I am not able to figure out... (4 Replies)
Discussion started by: vkn_1985
4 Replies

7. Shell Programming and Scripting

How to make the parent process to wait for the child process

Hi All, I have two ksh script. 1st script calls the 2nd script and the second script calls an 'C' program. I want 1st script to wait until the 'C' program completes. I cant able to get the process id for the 'C' program (child process) to make the 1st script to wait for the second... (7 Replies)
Discussion started by: sennidurai
7 Replies

8. Programming

catching a signal from child process

i am creating children processes using fork system call every child i create goes to sleep for random time. when child stops running how can i catch his signal and turminate the child (2 Replies)
Discussion started by: emil2006
2 Replies

9. UNIX for Advanced & Expert Users

catch SIGCHLD signal in parent process

I want to catch SIGCHLD signal in parent process. I can't use wait() system call to catch SIGCHLD according to project requirment. Operating system linux 3.1 can any one have a solution for this. Thanking you, ranjan (2 Replies)
Discussion started by: ranjan
2 Replies

10. Programming

parent and child process question?

Hi everybody, I'm trying to understand how a parent and child processes interact. This function( below) basically measures the fork time from the perspective of the parent only. what i would like to know is how to measure the time from the perspective of parent and child (ie: inserting... (0 Replies)
Discussion started by: tosa
0 Replies
Login or Register to Ask a Question