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

标签 windows perl

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

相关文章:

r - Docker Centos 7上gdata::installXLSXsupport()中的错误

windows - 使用 cmd Windows 7 将键盘命令发送到程序中

c# - 绘图窗口到图像文件

java - 执行java应用程序的批处理文件

perl - 如何在 Class::DBI 中进行更新而不先选择记录?

perl - 使用 Perl 解析/提取 HTML 标记的内部?

perl - 为什么使用 CPAN 和框架

c - 看看 C 中 WCHAR* 是否是 WCHAR 的子字符串

Windows批处理文件在树中查找重复项

Perl 试图理解正则表达式调试输出