Мне удалось локализовать проблему, которую я описал в моем предыдущем топике. Вся закавыка в poll. Есть код: int pipe1[2]; int pipe2[2]; pipe(pipe1); pipe(pipe2); ... // Пайпы создались нормально, далее идут пара fork с передачей //дескрипторов дочерним процессам ... while(true){ pollfd pl[2]; pl[0].fd = pipe1[0]; pl[0].events = POLLIN; pl[1].fd = pipe2[0]; pl[1].events = POLLIN; int ret_val = poll(pl, 2, -1); if(ret_val > 0){ if(pl[0].revents & POLLIN) f1(); else if(pl[1].revents & POLLIN){ printf("--pipe2\n"); fflush(stdout); f2(); } } } Все в принципе работает, но только poll завершается только тогда, когда я введу чего-то на консоли. Но ни stdin ни stdout я в poll не передаю, только дескрипторы, полученные вызовом pipe. Сначала пробовал заюзать select, он для пайпов не проканал. Что тут делать, я даже не представляю.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [C] poll () Как замаскировать POLLHUP (2008)
- Форум Как синхронизировать файловые потоки? (2024)
- Форум Неустоичивая работа сокетов в O_NONBLOCK режиме (2004)
- Форум перенправление вывода с JVM (2016)
- Форум Как проверить, есть ли байты в буфере (2019)
- Форум select/poll и fdopen с open'ом... (2004)
- Форум Сокеты (2019)
- Форум Проблема с pipe-ой. Глупо звучит... (2001)
- Форум Получение stdin/stdout дочернего процесса (2016)
- Форум Блокировка каналов ввода-вывода в линукс (2024)