gpt4 book ai didi

Perl 在句柄关闭时终止命令

转载 作者:行者123 更新时间:2023-12-05 00:56:24 29 4
gpt4 key购买 nike

我有以下代码从命令“some_command”读取输出。 'some_command' 是一个持续的过程,它保持打印输出直到它被终止。我想知道我是否关闭文件句柄或最后调用,它是否也会终止“some_command”进程,或者“some_command”可能会继续作为孤儿进程运行。我基本上想从命令中读取输出,直到找到带有/Output/的行然后终止。

my $mycommand = 'some_command';
open IN, "$mycommand 123456 |" or die("Failed: $!");
while(my $line = <IN> && !$stop) {
if($line =~ /Output/) {
# work is done
last;
$stop = 1;
}
}
close IN;

最佳答案

close在这种类型的句柄上将首先关闭管道,然后等待 child 退出。下一次尝试写入管道时, child 将死于 SIGPIPE。如果您不想等那么久,您可以加快进度并自行终止。

my $pid = open ...;
while (<IN>) {
if (/Output/) {
# work is done
kill TERM => $pid;
last;
}

print; # Or whatever
}

close IN;

(去掉 $stop 因为你没有使用它。)

关于Perl 在句柄关闭时终止命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11652011/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com