我正在使用以下脚本来捕获STDIN
,STDOUT
并STDERR
从作为参数传递的命令中捕获。
#!/usr/bin/perl
use strict;
use warnings;
use IPC::Open3;
local(*CMD_IN, *CMD_OUT, *CMD_ERR);
my $pid = open3(*CMD_IN, *CMD_OUT, *CMD_ERR, $ARGV[0]);
close(CMD_IN);
my @stdout_output = <CMD_OUT>;
my @stderr_output = <CMD_ERR>;
close(CMD_OUT);
close(CMD_ERR);
waitpid ($pid, 0); # reap the exit code
print "OUT:\n", @stdout_output;
print "ERR:\n", @stderr_output;
这一切都很好,除了我不确定如何监控传递的命令是否挂起。你能建议一个方法吗?
我最初从“Programming Perl”借用了这个片段。