Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Perl中终止带有警报的系统命令?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Windows上运行以下代码片段.从客户端读取后,服务器开始连续监听.我希望在一段时间后终止此​​命令.

如果我在main.pl中使用alarm()函数调用,那么它会终止整个Perl程序(这里是main.pl),所以我通过将它放在一个单独的Perl文件中来调用这个system命令
并使用system命令在原始Perl文件中调用此Perl文件(alarm.pl).

但是通过这种方式,我无法在原始Perl文件或被调用的Perl文件中调用此system()的输出.

请问任何人请让我知道终止系统()调用的方式或以我上面使用的方式获取输出?

@H_183_2@main.pl

@H_549_11@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中将其丢弃.您只需要在一个地方创建文件.当你摆脱额外的脚本,你不会有这个问题.

我最近遇到了一些警报和系统问题,但switching to IPC::System::Simple修正了这个问题.

祝好运,:)

大佬总结

以上是大佬教程为你收集整理的如何在Perl中终止带有警报的系统命令?全部内容,希望文章能够帮你解决如何在Perl中终止带有警报的系统命令?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。