Nello script seguente sto cercando di capire come funziona waitpid
, ma non attende il processo ssh
per uscire. done
viene stampato subito dopo il processo ssh
.Perché waitpid non attende l'uscita del processo?
Domanda
Come Faccio waitpid
continuare solo quando il pid dò usciti?
#!/usr/bin/perl
use strict;
use warnings;
use Parallel::ForkManager;
use POSIX ":sys_wait_h";
my $pm = Parallel::ForkManager->new(5);
my $pid = $pm->start;
my $p = $pid;
if (!$pid) {
system("ssh 10.10.47.47 sleep 10");
$pm->finish;
}
$p = qx(/usr/bin/pgrep -P $p);
print "ssh pid is $p\n";
my $kid;
do {
$kid = waitpid($p, 0);
} while $kid > 0;
print "done\n";
Ho anche provato
while (1) {
$p = kill 0, $p;
print "x";
sleep 1 if $p;
print "*";
last unless $p;
}
ma non raggiunge neppure la prima print
per qualche motivo e mai uscite.