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;
}
}
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.