我正在尝试分叉出如下所示的 cmd
my $h = IO::Handle->new;
$self->{-handle} = $h;
die "IO::Handle->new failed." unless defined $h;
$self->{-pid} = open $h, $self->{-command} . ' 2>&1 |';
$self->fileevent($h, 'readable' => [\&_read_cmd_op, $self]);
sub _read_cmd_op{
my $h = $self->{-handle};
if ( sysread $h, $_, 4096 ) {
my $t = $self->Subwidget('text');
$t->insert('end', $_);
$t->yview('end');
} else {
$self->{-finish} = 1;
}
}
现在的问题是'$self{-command}' 正在调用另一个perl 脚本,如果死了我想知道。
请注意,即使 cmd 死了, $self{-pid} 仍然存在。
上面的代码在一个 Perl/TK 应用程序中,其中 $self->{-command} o/p 在文本小部件中捕获。
不知何故,即使在测试小部件中,我也没有收到 die 消息。我在标准输出上看到它。
2个问题
如何在文本小部件中获取 cmd 操作/错误?
我怎么知道通过 IO::Handle 触发的命令死了?