Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Launch process, get PID

by pc88mxer (Vicar)
on Feb 28, 2008 at 23:26 UTC ( [id://671051]=note: print w/replies, xml ) Need Help??


in reply to Launch process, get PID

You're executing command in the background, so the pid you are getting back is the pid of the shell that's spawning command and not of command itself. Just want to make sure you're aware of that.

If you just want to launch command and not worry about it, just use fork and exec directly:

my $pid = fork(); die "unable to fork: $!" unless defined($pid); if (!$pid) { # child exec('command...'); die "unable to exec: $!"; } # parent continues here, pid of child is in $pid

In the exec, perhaps you'll want to redirect the child's output to either /dev/null or a file.

Another option is to 'daemonize' the child which involves detaching it from the parent's process group. For an example, have a look at http://snippets.dzone.com/posts/show/359, and I'm sure there's code on CPAN to do it, too.

In your original code, I think you were getting broken pipes because you were closing $handle and the child was still writing to its STDOUT.

Replies are listed 'Best First'.
Re^2: Launch process, get PID
by rvosa (Curate) on Feb 29, 2008 at 03:04 UTC
    Thanks people, that's the ticket. I've seen the idiom before, but couldn't come up with it on my own.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (3)
As of 2024-03-29 01:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found