|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Valentin Nechayev 2:5020/400 09 Jun 2004 00:18:44 To : Denis Shaposhnikov Subject : Re: O_NONBLOCK STDIN -------------------------------------------------------------------------------- >>> Denis Shaposhnikov wrote: DS>Как можно узнать о том, что скрипту закрыли STDIN, если DS> fcntl(STDIN, F_SETFL, O_NONBLOCK); Если читаешь sysread'ом - он вернёт 0 (независимо от флага неблокируемости). Если более высокоуровневыми средствами - eof(). DS>А вообще, задача состоит в том, что бы одновременно читать из STDIN и DS>named pipe. Ладно, открываю оба с O_NONBLOCK и читаю в цикле. Hо DS>непонятно, как узнать о закрытие STDIN (что бы завершится) и как лучше DS>организовать сон, что бы не крутиться в холостую. Пока, ничего лучше DS>sleep(1) не придумал. Hо хотелось бы как-нибудь заснуть до того DS>момента, когда в открытых файловых хэндлах не появятся данные для DS>чтения. select() - в общем-то основное средство решения подобных проблем (при количестве хэндлов менее тысячи). Учти, что разрешение чтения означает только возможность чтения без блокирования, но что это будет - данные, eof или ошибка - не сообщается select'ом. -netch- --- ifmail v.2.15dev5.3 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/736839377fb0.html, оценка из 5, голосов 10
|