perl使用open3写入STDIN并捕获STDOUT和STDERR

时间:2012-08-02 19:54:19

标签: windows perl stream

我正在使用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的工作示例吗?

1 个答案:

答案 0 :(得分:3)

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