0

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

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

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

4

1 回答 1

3

select仅适用于 Windows 中的套接字;它不适用于管道。您可以改为创建套接字并将它们传递给open3而不是让它为您创建管道(如此处所示,但我建议您改用IPC::Run等更高级别的模块。open3是一个相当低级的功能。

于 2012-08-02T20:03:41.293 回答