Проблема с Perc в getc в обработчике SIGINT в perl 5.14.2 - PullRequest
1 голос
/ 09 марта 2012

Вот моя среда тестирования:

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», , затем обработчик непрерывно печатает «1234» и «4444» с пропуская функцию getc в обработчике , затем она вешает ожидающие вводы (я полагаю, что это getc за пределами обработчика, который все еще ожидает ввод), я ввожу "q", он печатает "q".

Итак, мой вопрос:

  1. почему не работает функция getc в обработчике? Кажется, что проблема не существует в других версиях Perl.
  2. Как можно решить, чтобы заставить работать функцию getc в обработчике?
...