Проблема с Perc в getc в обработчике SIGINT в perl 5.14.2

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

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 в обработчике?

0 ответов

Другие вопросы по тегам