2012-08-02 113 views
0

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

它应该打印'StdOut!'和'StdErr!',以及pid,但我只能得到PID。我不知道是因为我的操作系统,还是因为线程已经有10年了(没有大的事情,Perl 5几乎是18年,对吧?)。另一个和尚张贴this脚本来解决另一个问题,但在我的电脑上它永远不会退出。

任何人都可以给我一个使用open3在perl中启动命令,写入其STDIN并捕获其STDERR和STDOUT的实例吗?

回答

3

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

相关问题