LINUX.ORG.RU

проблема с poll


0

0

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

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.