次のスクリプトを使用してキャプチャし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;
渡されたコマンドがハングしているかどうかを監視する方法がわからないことを除いて、すべてうまく機能します。方法を教えてください。
このスニペットは、もともと「プログラミング Perl」から借りてきました。