В общем ситуация такая. Между двумя процессами организуется связь через pipe. Родитель ждет от чилда команд через пайп с помощью select. Вызываю select на доступность чтения из пайпа и из сокета (там еще и сокет надо слушать). все успешно блокирутся. И select ждет входящих данных из сокета и/или из пайпа. Пишу в потомке в этот пайп данные. Родительский select разблокируется и определяет что в пайп поступили данные. Все данные считываются. Затем опять возвращаюсь на select. Но он больше не блокируется и всегда срабатывает на пайпе. Хотя read из пайпа дает 0, то бишь конец файла. :(
Так вот вопрос заключается в том, почему первый вызов select блокируется, а второй уже нет? Как можно заставить select блокироваться и при втором вызове?
И вобще... Оно так должно быть , или я что-то путаю.
Подскажите.