【问题标题】:perl using open3 to write to STDIN and capture STDOUT and STDERRperl 使用 open3 写入 STDIN 并捕获 STDOUT 和 STDERR
【发布时间】:2012-08-02 19:54:18
【问题描述】:

我正在使用 Windows x64 机器并试图从命令中捕获 STDOUT 和 STDERR 流。我还必须写入命令的 STDIN。我正在尝试为此使用 perl 的 IPC::Open3,但没有运气。我正在使用发布的脚本here 和这个脚本here 的命令。我当然用 Windows 的“perl test.pl”替换了 $cmd 变量。

它应该打印 'StdOut!'和'StdErr!',以及pid,但我只得到PID。我不知道是因为我的操作系统,还是因为线程已经使用了 10 年(没什么大不了的,Perl 5 快 18 年了,对吧?)。另一位僧侣发布了this 脚本来修复其他人的任何问题,但在我的电脑上它永远不会退出。

谁能给我一个使用 open3 在 perl 中启动命令、写入其 STDIN 并捕获其 STDERR 和 STDOUT 的工作示例?

【问题讨论】:

    标签: windows perl stream


    【解决方案1】:

    select 仅适用于 Windows 中的套接字;它不适用于管道。您可以改为创建套接字并将它们传递给open3,而不是让它为您创建管道(如here 所示),但我建议您使用更高级别的模块,例如IPC::Runopen3 是一个相当底层的函数。

    【讨论】:

      猜你喜欢
      • 2017-07-14
      • 2020-06-23
      • 1970-01-01
      • 2017-08-18
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      相关资源
      最近更新 更多