On Tue, 2 Mar 2004, Harry Putnam wrote:

> 
> What is the handy way to record the pid of $some_process in this
> fake code?
> 
> $some_process = 'tcpdump -v -ieth0 >file')
> system("$some_process") or die "Can't start $some_process: $!";
> 
> print "Pid is $pid\n";
> 
> The process is started by a more elaborate perl script at bootup.
> and restarted every four hours from syslog. Code above is way simplified.
> 
> 

I don't think you can get the PID when using the system() function. Also, 
I am fairly sure that system() does not return control to your Perl script 
until the function it invokes finishes. Would something like:

use Errno qw(EAGIN);
...
$someprocess=...
FORK: {
if ($pid=fork) {
        print "PID is $pid\n";
}
elsif (defined $pid) {
        exec $someprocess;
}
elsif ($!=EAGIN) {
        sleep 5; #wait five seconds
        redo FORK; #then try again
}
else {
        die "Cannot fork to run $someprocess $!";
}
}

--
Maranatha!
John McKown


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to