| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > Fcntl |
| Автор: TDrive 8.9.2009, 15:42 | ||
| есть скрипт который в начале работы создаёт например 20 процессов. потом каждому процессу даёт задачу и ждёт. когда какой нибудь процесс выполняет задачу он сообщает родительскому процессу что всё зделал. родительский процесс даёт ему новую задачу. выглядит это примерно вот так:
в таком виде он работает НО syswread() если не может прочитать из дескриптора тормозится пока в дескрипторе не появятся данные. тоесть скрипт работает потому что все процессы нормально работаю но если один процесс повиснет то главный процесс будет ждать от него ответа. значит надо массив дескрипторов @ParentRead сделать неблокирующим. знаю что надо use Fcntl; знаю что делает это fcntl() но вот с параметрами этой функции не могу разобраться. ну первый параметр это дескриптор а другие 2 параметра вообще тёмный лес.... и описания нигде найти не могу. может кто помочь разобраться? (ещё можно вроде через метод blocking() но я стараюсь не использовать модули чтоб самому разобраться как чё работает) кстате почему больше 64 процессов открыть нельзя? |
| Автор: TDrive 9.9.2009, 13:25 |
| |
| Автор: ginnie 9.9.2009, 13:45 |
| TDrive, может Вам поможет http://docstore.mik.ua/orelly/perl/cookbook/ch07_15.htm? |
| Автор: TDrive 9.9.2009, 15:21 |
о спасиб то что надо дальше разберусь |