http://www.perlmonks.org?node_id=253283


in reply to Re: Re: Re: 'better mousetrap': how to perform timed event
in thread 'better mousetrap': how to perform timed event

I don't need to exec() something as much as I need to call a sub-routine. I would figure that since the fork()'ed child is monitoring the time difference it probably couldn't call the sub-routine once the timelimit was reached, right? If I were using threads this could be possible, iiuc. 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? Im not trying to be snide. I'm honestly asking the question because this is how I understand how it all works.

So, in short, after 20 seconds once the vote has been initiated, I need to call end_vote() which does some things and then re-initializes all the variables used in the vote session.

_ _ _ _ _ _ _ _ _ _
- Jim
Insert clever comment here...

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: 'better mousetrap': how to perform timed event
by tachyon (Chancellor) on Apr 26, 2003 at 12:29 UTC

    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