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.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.