小编use*_*686的帖子

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

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

如果我使用报警()内的函数调用main.pl,那么它会终止整个Perl程序(在这里main.pl),所以我称此系统通过将其放置在一个单独的Perl文件并调用这个Perl的文件(命令alarm.pl使用),在原有的Perl文件系统命令.

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

有人可以让我知道终止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;
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

两种方式display.txt总是空的.

perl system alarm

8
推荐指数
2
解决办法
1万
查看次数

如何在Perl中获取Win32 :: Process命令的输出?

我正在使用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)

windows perl

2
推荐指数
1
解决办法
1397
查看次数

如何将STDOUT重定向到Perl脚本中的文件后还原?

下面是我的代码的一部分,我的代码进入"if loop",$value =1进程输出iperf.exe正在进入my_output.txt.由于我在alarm(20sec)一段时间后超时,所以也只想捕获此过程的输出.

然后我想继续命令提示符,但我无法返回到命令提示符.

不仅这个代码本身在命令提示符下不是PRINT,而是在my_output.txt文件上打印

(我正在循环这个,如果阻塞我的代码)

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 …

perl

1
推荐指数
2
解决办法
4218
查看次数

如何在Perl中解析此配置文件格式(允许注释)?

我正在从.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)

config.txt(用户输入文件)

PING_TTL   |   1
CLIENT_PORT |   7870
FTP_SERVER  |   192.162.522.222

任何人都可以建议我这样做吗?

/岩石

perl

0
推荐指数
1
解决办法
2190
查看次数

标签 统计

perl ×4

alarm ×1

system ×1

windows ×1