linux 进程退出原因,linux – 为什么waitpid不等待进程退出?

在下面的脚本中,我试图弄清楚waitpid是如何工作的,但它不会等待ssh进程退出.完成后立即打印,而不是在ssh过程存在之后.

当我给它的pid退出时,如何才使waitpid继续?

#!/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";

我也试过了

while (1) {

$p = kill 0,$p;

print "x";

sleep 1 if $p;

print "*";

last unless $p;

}

但由于某种原因它甚至没有达到第一次印刷,也从未退出.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值