Witam.
Mam połączyć ze sobą 3 procesy przy pomocy pipe, tak, aby każdy z każdym mógł się komunikować. Aby zaoszczędzić na zasobach wymyśliłem, że połączę je w pętlę i zastosuję komunikację jak w sieci z rozgłaszaniem. Niestety nie mogę podmienić STDIN i STDOUT w każdym z procesów, bo proces p1 musi czytać z klawiatury, a p3 musi pisać na ekran. Proces powołujący te 3 procesy tworzy łącza nienazwane i podmienia STDIN, STDOUT lub STDERR. Niestety próby odczytu w dowolnym z procesów kończą się zwróceniem wartości -1, a zmienna errno jest ustawiana na EBADF.
kodu chyba nie ma potrzeby zamieszczać bo jest baaardzo rozbudowany. ważne jest to, że żadna z funkcji dup2 nie zwraca błędu.