[linux C] pipe i dup2

0

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.

0

w takim razie moze przykrój ten kod do samych main/fork/pipe/dup ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1