gpt4 book ai didi

perl - 如何在Perl中终止带有警报的系统命令?

转载 作者:行者123 更新时间:2023-12-04 04:58:25 25 4
gpt4 key购买 nike

我在Windows上运行以下代码段。服务器从客户端读取后开始连续监听。我想在一段时间后终止此​​命令。

如果我在main.pl中使用alarm()函数调用,则它将终止整个Perl程序(此处为main.pl),因此我通过将其放在单独的Perl文件中来调用了system命令
并使用system命令在原始Perl文件中调用此Perl文件(alarm.pl)。

但是以这种方式,我既无法在原始Perl文件中也无法在一个Perl文件中获取此system()调用的输出。

有人可以让我知道终止system()调用或以我上面使用的方式获取输出的方法吗?

main.pl

my @output = system("alarm.pl");
print"one iperf completed\n";

open FILE, ">display.txt" or die $!;
print FILE @output_1;
close FILE;

Alarm.pl
alarm 30;
my @output_1 = readpipe("adb shell cd /data/app; ./iperf -u -s -p 5001");

open FILE, ">display.txt" or die $!;
print FILE @output_1;
close FILE;

两种方式 display.txt始终为空。

最佳答案

这里有一些单独的问题。

首先,为了防止alarm杀死脚本,您需要处理ALRM信号。请参阅alarm文档。您不需要两个脚本。

其次,system不捕获输出。如果要这样做,则需要反引号变体之一或管道。已经在Stackoverflow上找到了答案。

第三,如果alarm.pl在display.txt中放入了任何内容,则在以写入模式重新打开文件时,会将其丢弃在main.pl中。您只需要在一个地方创建文件。当您摆脱多余的脚本时,就不会有此问题。

我最近在使用alarmsystem时遇到了一些问题,但是switching to IPC::System::Simple修复了该问题。

祝你好运, :)

关于perl - 如何在Perl中终止带有警报的系统命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2562931/

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