js1 has asked for the wisdom of the Perl Monks concerning the following question:
Hi
I'm having a problem with the code below because the pid returned is not a running process. The script I'm calling process_tar.pl simply echos the filename and does a sleep 40, but its pid differs to the one returned below.
$cmd="$scriptsdir/process_tar.pl $file >> /tmp/testlog &"; + $pid=open(PID,"|$cmd"); if(pidrunning($pid){ print "PID $pid is running"; }else{ print "PID $pid is not running"; } # check if process is running sub pidrunning{ ($pid)=@_; $exists = kill 0, $pid; return $exists; }
I wondered if it going wrong because of the ampersand at the end of the command? If I don't use the ampersand, the parent script waits until the command has completed which defeats the purpose of forking it. I have a feeling there might be a better way to do this, so if anyone can see what I'm doing wrong I'd appreciate any help.
Thanks,
js1'
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: wrong pid
by shmem (Chancellor) on Apr 23, 2007 at 13:47 UTC | |
by js1 (Monk) on Apr 23, 2007 at 13:55 UTC | |
|
Re: wrong pid
by kyle (Abbot) on Apr 23, 2007 at 13:53 UTC | |
by js1 (Monk) on Apr 23, 2007 at 14:04 UTC | |
by kyle (Abbot) on Apr 23, 2007 at 14:24 UTC | |
|
Re: wrong pid
by MonkE (Hermit) on Apr 23, 2007 at 13:54 UTC | |
|
Re: wrong pid
by shigetsu (Hermit) on Apr 23, 2007 at 13:14 UTC | |
by js1 (Monk) on Apr 23, 2007 at 13:40 UTC |