我想掏錢一個cmd像執行的命令,在模具錯誤信息如下想從通過開放在Perl
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;
}
}
現在的問題是,「$ {自我-command}」是調用 另一個Perl腳本,如果死亡我想知道。
請注意,即使cmd死亡,$ self {-pid}仍然存在。
上述代碼位於Perl/TK應用程序中,其中$ self - > { - command} o/p在 文本窗口小部件中捕獲。
不知何故,即使在測試小部件中我也沒有得到死亡消息。 我在標準輸出上看到它。
2個問題
我怎樣才能在文本插件的CMD OP /錯誤?
我怎麼知道通過IO :: Handle觸發的命令死了?
謝謝斯拉文。我正在向文本小部件發送錯誤消息。我的錯誤,因爲我的CMD有'tee',所以stderr已經過濾了。但我得到了retcode = 0。我會做更多的研究.. – user180630
管道的返回值來自鏈中的最後一個命令。比較'false; echo $?'vs.'false |三通; echo $?' –