Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: Killing a hanging child process

by liverpole (Monsignor)
on Sep 11, 2006 at 23:33 UTC ( [id://572428]=note: print w/replies, xml ) Need Help??


in reply to Killing a hanging child process

Hi Ovid,

What sgifford said makes a lot of sense:

    You can also do tricks with double-fork'ing to arrange for the process to be a child of init(8)

because I was using this trick just today, in a situation where I was trying to disassociate a Perl script from its calling CGI process.  The trick he mentions isn't too difficult, though:

sub spawn_process { my $pid = fork; defined($pid) or die "Failed first fork of child process\n"; # Parent waitpid $pid, 0; # This will happen momentarily return; # Child my $kid = fork; defined($kid) or die "Failed second fork of grandchild process\n"; $kid and exit; # Grandchild perform_my_tasks(); exit; # All your grandchildren are belong to init! }

The nice thing about this is that it lets the parent wait for the child process, which quickly exits, and then go on its way doing more processing.  Meanwhile the grandchild process is inherited by init, and doesn't need to be waited for.


s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (5)
As of 2024-04-25 10:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found