ここに私のテスト環境があります:
root@redhat89195 bin]# ./perl -v
This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-thread-multi
.....
コードスニペット:
$SIG{INT}=sub{
print "1234\n";
print getc(STDIN);
print "4444\n";
};
print "5678\n";
print getc(STDIN);
プログラムを実行した後、「5678」が最初に出力され、入力を待ってから、「eeee」に続いて「ctrl-c」を入力すると、ハンドラーはハンドラーの getc 関数をスキップして「1234」と「4444」を連続して出力します、その後、待機中の入力がハングします(まだ入力を待機しているのはハンドラーの外側の getc だと思います)。「q」と入力すると、「q」が出力されます。
だから私の質問は:
- ハンドラーの getc 関数が機能しないのはなぜですか? この問題は、他の perl リリースには存在しないようです。
- ハンドラーの getc 関数を機能させるにはどうすれば解決できますか?