Nowe posty

Autor Wątek: Potok między dwoma procesami potomnymi  (Przeczytany 4277 razy)

forkSO

  • Gość
Potok między dwoma procesami potomnymi
« dnia: 2013-05-22, 20:38:30 »
Hej
Nie wiem w jaki sposób mam się do tego zabrać (temat).
Umiem utworzyć potok między procesem macierzystym i potomnym.

Z góry dziękuję za pomoc

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
Potok między dwoma procesami potomnymi
« Odpowiedź #1 dnia: 2013-05-22, 21:33:03 »
Deskryptory plików, a tym samym strumienia, są kopiowane do procesów potomnych. Jeżeli rodzic utworzy strumień, a następnie sforkuje się na dwa procesy potomne, to oba będą posiadać kopie deskryptorów do strumienia.

Rodzic nic nie będzie z nimi robił, więc może je pozamykać.
Jeden z potomków zamyka wyjście i będzie do strumienia pisać.
Drugi zamyka wejście i czyta z wyjścia.

W sumie jest to to samo, co już robiłeś, tylko że potomek robi to, co teraz rodzic.

xavery

  • Gość
Potok między dwoma procesami potomnymi
« Odpowiedź #2 dnia: 2013-05-23, 14:19:19 »
Tylko, że sforkowane procesy nie wiedzą który jest "pierwszy" a który "drugi":) W przypadku procesu-rodzica robi się to na podstawie wyjścia funkcji "fork" ale procesy potomne będą identyczne. Rozwiązaniem byłoby ustawienie jakiejś zmiennej flagowej pomiędzy dwoma forkami aby procesy potomne mogły się "rozpoznać". Względnie można by było forkować drugi proces potomny z pierwszego procesu potomnego.

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
Potok między dwoma procesami potomnymi
« Odpowiedź #3 dnia: 2013-05-24, 08:18:40 »
Po co mają wiedzieć? Wystarczy, że rodzic wie. Pierwszy sforkowany to nadawca, drugi to odbiorca. Filozofii tutaj nie ma.