Я сделал программу, которая может завершиться двумя способами: либо пользователь вводит строку say - «kill», либо конкретные поточные сигналы SIGINT.perl: прерывание потока заблокировано пользователем
В этом терминатора нить у меня есть заявление (чтобы поймать «убить»):
$a = <>;
с последующим «возвращением;» У меня есть соответствующий обработчик сигналов (INT) тоже на вершине, которая делает:
print "signal received\n";
threads->exit();
но в случае автоматического завершения (то есть SIGINT посылается из другого потока), печать STMT не приходит до Я нажимаю какую-то клавишу, независимо от того, как долго я жду. Я полагаю, что <> блокируется.
Может ли кто-нибудь рассказать, как я могу предоставить какой-то ввод <> в случае автоматического завершения, чтобы немедленно увидеть результаты.
Спасибо.
Внутри вызова <> вашего потоку дал управление к ОСАМ. Итак, да, он блокируется до уровня eof. – starbolin
Вам нужно что-то другое, кроме line-i/o, если вы хотите войти. – starbolin