However, forked children don't know what their parent is doing nor does the parent know what it's children are doing with the exception of when the child exits, right?
This is totally wrong. Read perlipc
Here is code that uses Hang Up signal to perform the required parent/child IPC:
[root@id3 root]# cat test.pl
#!/usr/bin/perl
$|++;
$SIG{HUP} = sub { do_end_vote() };
while ( 1 ) {
my $event = check_for_event();
if ( $event ) {
do_start_vote();
if ( fork() == 0 ) {
# this is kid
sleep 10;
local $SIG{HUP} = sub { print "Child caught HUP!" };
# signal parent (and kid)
kill HUP, $0;
exit 0;
}
}
# this is parent
sleep 1;
print ".";
}
sub do_start_vote { print "Begin" }
sub do_end_vote{ print "End!" }
# generate one event every 20 calls to this sub for testing
sub check_for_event{ $a++; return $a%20 == 0 ? 1 : 0 }
[root@id3 root]# ./test.pl
...................Begin.........Child caught HUP!End!...........Begin
+.........Child caught HUP!End!...........Begin....
[root@id3 root]#
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|