我正在使用 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() );
}
最佳答案
Win32::Process 是那些基本上是将 Win32 API 直接移植到 Perl 的模块之一,因此对 Perl 程序员来说意义不大。除非您想做一些非常特定于 Windows 的事情,否则有更好的方法来做。
如果你只想获得进程的输出,你可以使用 Perl 的反引号正常运行它。
my $output = `iperf.exe -u -s -p 5001`;
如果你想要花哨一些,例如后台处理一个进程并捕获它的输出,我推荐 IPC::Run .
关于windows - 如何在 Perl 中获取 Win32::Process 命令的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2572218/