Изучаею c/c++ программирование под Linux.
Такой вопрос.Предок форкается 2 раза. Предок читает с клавиатуры посимвольно. Прочитанное передаётся через pipe1 в child1. child1 производит некоторую манипуляцию над прочитанным и передаёт через pipe2 в child2. child2 читает из pipe2 и выводит на экран.
По идее всё просто. Но такая проблема while(true) loop в child 2 сидит на инструкции read(pipe2[... и тормозит.
Если делать fnctl(pipe2[0],n_delay) то тогда вторая инструкция этого loop'а (а именно cout << прочитанное) начинает выводить его не единожды, а пока kill не сделаешь...как это можно починить??
http://helium.exceede.com:8890/main.cc <- линк на source
спасибо
Пардон, не 8890, а 9980.
> Но такая проблема while(true) loop в child 2
>сидит на инструкции read(pipe2[... и тормозит.
>Если делать fnctl(pipe2[0],n_delay) то тогда вторая инструкция этого loop'а (а именно cout
><< прочитанное) начинает выводить его не единожды, а пока kill не
>сделаешь...
>
>как это можно починить??может быть
$ man select
>как это можно починить??1. man 2 select
2. man 2 fcntl /O_NONBLOCK
Всем спасибо, всё заработало.