Пожалуйста, если кто сталкивался с такой проблемой, помогите. Есть программа - два процесса общаются через канал. Задача - перевести канал со стороны родительского процесса в асинхронный режим чтения. фрагмент проги: int pipedes[2]; pipe(pipedes); int er_code; struct flock mylock; fcntl(pipedes[0], F_GETLK,&mylock); /*проверяем, чему равен mylock.l_type, он оказывается,равен нулю! */ mylock.l_type = F_UNLCK; mylock.l_whence = 0; mylock.l_start = 0; mylock.l_len = 0; //пытаемся разблокировать fcntl(pipedes[0], F_SETLK,&mylock); pid = fork(); if (pid>0) { //родительский процесс } else { дочерний процесс .... close(pipedes[1]); exit(0); } //Continue parent process... read(pipedes[0],(void *) &er_code, sizeof(int)); close(pipedes[0]); return 0; ----------------------------------------------------- fcntl вернул 0, то есть всё нормально как будто бы- разблокировался, однако read в родительском процессе всё равно ждёт, сволочь! Не важно,послал потомок чего в канал или не послал, мне нужно,чтобы read сразу возвращал что-то.Мало того, после вызова fcntl c F_SETLK я решил проверить,перезаписалась ли структура: flock dlock; fcntl(pipedes[0], F_GETLK,&dlock); так вот поле l_type как было равно нулю, так и осталось! Система - hpux1.1. Буду очень признателен за любую помощь.
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/img/p.gif)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Pipe (2011)
- Форум Потоки (2017)
- Форум pipe()+exec() (2019)
- Форум создание дочерних процессов_ (2010)
- Форум проблема с чтением из FIFO (2024)
- Форум Не блокируется pid-файл (2014)
- Форум Блокировка каналов ввода-вывода в линукс (2024)
- Форум Получение stdin/stdout дочернего процесса (2016)
- Форум Как синхронизировать файловые потоки? (2024)
- Статьи Как кушать вилкой. ... или о fork() в двух словах (2023)