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; } }
|
---|
Replies are listed 'Best First'. | |
---|---|
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 |
In Section
Seekers of Perl Wisdom