我在Windows上运行以下代码段.从客户端读取后,服务器开始连续监听.我希望在一段时间后终止此命令.
如果我使用报警()内的函数调用main.pl,那么它会终止整个Perl程序(在这里main.pl),所以我称此系统通过将其放置在一个单独的Perl文件并调用这个Perl的文件(命令alarm.pl使用),在原有的Perl文件系统命令.
但是通过这种方式,我无法system()在原始Perl文件中或在被调用的Perl文件中获取此调用的输出.
有人可以让我知道终止system()呼叫的方式或以我上面使用的方式获取输出吗?
my @output = system("alarm.pl");
print"one iperf completed\n";
open FILE, ">display.txt" or die $!;
print FILE @output_1;
close FILE;
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
两种方式display.txt总是空的.
我正在使用use Win32::Process我的应用程序运行如下.它运行正常,但我没有任何办法将输出到.txt文件.
我使用NORMAL_PRIORITY_CLASS而不是CREATE_NEW_CONSOLE来获取同一终端本身的输出,但我不知道如何将其重定向到txt文件.
/岩石
#!/usr/bin/perl
use strict;
use warnings;
use Win32::Process;
Win32::Process::Create(my $ProcessObj,
"iperf.exe",
"iperf.exe -u -s -p 5001",
0,
NORMAL_PRIORITY_CLASS,
".") || die ErrorReport();
my @command_output;
push @command_output,$ProcessObj;
open FILE, ">zz.txt" or die $!;
print FILE @command_output;
close FILE;
sleep 10;
$ProcessObj->Kill(0);
sub ErrorReport{
print Win32::FormatMessage( Win32::GetLastError() );
}
Run Code Online (Sandbox Code Playgroud) 下面是我的代码的一部分,我的代码进入"if loop",$value =1进程输出iperf.exe正在进入my_output.txt.由于我在alarm(20sec)一段时间后超时,所以也只想捕获此过程的输出.
然后我想继续命令提示符,但我无法返回到命令提示符.
不仅这个代码本身在命令提示符下不是PRINT,而是在my_output.txt文件上打印
(我正在循环这个,如果阻塞我的代码)
inside value loop2 ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 8.00 KByte (default) ------------------------------------------------------------ [160] local 10.232.62.151 port 5001 connected with 10.232.62.151 port 1505 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [160] 0.0- 5.0 sec 2.14 MBytes 3.59 Mbits/sec 0.000 ms 0/ 1528 (0%) inside value loop3 clue1 clue2 inside value loop4 one …
我正在从.txt文件中读取一些参数(来自用户输入),并希望确保我的脚本可以读取它,即使用户在该特定参数之前留下空格或制表符.
此外,如果我想为每个参数添加注释,后跟#,在参数(例如7870 # this is default port number)之后让用户知道参数
我怎样才能在同一个文件中实现它?
现在,我正在使用split /\|\s/.
$data_file="config.txt";
open(RAK, $data_file)|| die("Could not open file!");
@raw_data=<RAK>;
@Ftp_Server =split(/\|\s/,$raw_data[32]);
Run Code Online (Sandbox Code Playgroud)
PING_TTL | 1 CLIENT_PORT | 7870 FTP_SERVER | 192.162.522.222
任何人都可以建议我这样做吗?
/岩石