У меня есть программа, которая зовет другую программу и обработку вывода ребенка, то есть:Как сделать неблокирующее чтение из канала в Perl?
my $pid = open($handle, "$commandPath $options |");
Теперь я попробовал несколько различных способов, чтобы читать от ручки без блокировки с небольшим или без успеха.
Я нашел похожие вопросы:
- perl-win32-how-to-do-a-non-blocking-read-of-a-filehandle-from-another-process
- why-does-my-perl-sysread-block-when-reading-from-a-socket
Но они страдают от проблем:
ioctl
стабильно падает Perlsysread
блокировки по 0 байтам (обычное явление)
Я не уверен, как решить эту проблему.
Это Windows? – mob
См. [Этот ответ] (http://stackoverflow.com/questions/1530592/why-does-my-perl-sysread-block-when-reading-from-a-socket/1532251#1532251) - используйте 'select() ', чтобы определить, есть ли доступные данные для чтения. – Ether
@ Едкий выбор не работает с файловыми дескрипторами на окнах – tzenes