Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Re: Re: Re: 'better mousetrap': how to perform timed event

by snafu (Chaplain)
on Apr 25, 2003 at 23:28 UTC ( #253283=note: print w/replies, xml ) Need Help??


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...

  • Comment on Re: Re: Re: Re: 'better mousetrap': how to perform timed event

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

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2019-05-27 09:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you enjoy 3D movies?



    Results (155 votes). Check out past polls.

    Notices?