Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: How to make child to halt its execution and the parent to continue?

by kschwab (Priest)
on Mar 20, 2013 at 18:28 UTC ( #1024584=note: print w/ replies, xml ) Need Help??


in reply to How to make child to halt its execution and the parent to continue?

Reading your request again, my answer above probably isn't correct. It would allow the child process to run on, but the parent would die. That's usually what people want to do. If you really want the child to die, but the parent to live on through a <Control-C>, you'll want to ignore SIGINT in the parent. Your code, with SIGINT being ignored in the parent. Also changed so that the parent prints 'P' and the child prints 'C', so it's more clear. Since the parent is ignoring SIGINT, you'll have to kill this from another window, or try <Ctrl-\>, which sends SIGQUIT.

#!/usr/bin/perl use strict; use warnings; $|=1; my $pid = fork; die "Cannot fork: $!" unless defined $pid; unless($pid) { print "Child start\n"; my $end; local $SIG{INT} = sub { $end = 1 }; while(1){ sleep(1); until($end) { print "C"; sleep(1); } } exit 0; } # ingore the SIGINT in the parent $SIG{INT} = 'IGNORE'; print "Parent start\n"; for(my $i = 0; ;$i++){ sleep 1; print "P"; if($i == 10){ kill INT => $pid; } }


Comment on Re: How to make child to halt its execution and the parent to continue?
Download Code
Re^2: How to make child to halt its execution and the parent to continue?
by srlbharu (Acolyte) on Mar 22, 2013 at 05:23 UTC

    Hi Sir,

    This is the exact scenario what am I looking for. It is working exactly as I want.

    Thanks a lot, great relax for me :-)

    A small add on

    In the current example, parent is sending sigal after 10 seconds and then child was killed. Instead, Child needs to send a flag once its execution completes and once the flag is received in parent then it should send the Signal SIGINT to Child. As I know, to achieve this, we need to use IPCs like IPC::Sharable but pel 5.6 doesnot support it. Can you please let me know if any alternative way to do so?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1024584]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (5)
As of 2014-08-31 04:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (294 votes), past polls