Мне удалось локализовать проблему, которую я описал в моем предыдущем топике.
Вся закавыка в 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, он для пайпов не проканал.
Что тут делать, я даже не представляю.