在Windows上动态重定向子项的stdout

时间:2010-09-07 22:35:39

标签: windows perl

我注意到有关处理此问题的其他几个问题,但似乎都受到了影响:

  • 不在Windows上工作
  • 要求孩子在检索输出之前完成

我想做的是调用一个程序(例如tshark.exe)并在其运行时处理它的输出。

到目前为止,我已尝试过:

  • 反引号
  • RUN3
  • PROC ::可靠
一切都没有成功。我可以花一整天的时间尝试并且没有找到一个可以帮助我解决这个问题的模块(即我花了一整天时间),但我认为如果我问过是否有人知道它可能会更好。

2 个答案:

答案 0 :(得分:4)

您不需要模块。只需了解open命令的管道形式 - 这些在Windows上运行正常。

my $pid = open (my $cmd_handle, "tshark.exe @options |");
# on success, $pid holds process identifier of the external command.

while (<$cmd_handle>) {
    # sets $_ to next line of output.
    # Will block until a line of output is ready.
    # Is  undef  when the command is complete.

    ... process $_ ...
}
close $cmd_handle;   # waits for command to complete if it hasn't completed yet

答案 1 :(得分:0)

结帐IPC::RunIPC::Open2IPC::Open3也可能满足您的需求。

祝你好运!