Dodaj do ulubionych

[C] Jak zamknac deskryptory w pipe ???

27.01.06, 21:51
Mam nastepujacy problem: w ramach wiekszego projektu zawsze najpierw pisze
male programy, zeby zapoznac sie z problemem i tematyka.
Jeden z tych malych programikow polega na utworzeniu 2 procesow potomnych
ktore jednoczesnie pisza do pipe`a.Kwestia synchronizacji na razie nie gra roli.
Otoz po forku, gdy procesy juz istnieja przy wejsciu do procesu potomnego ,
zamykam lacze do czytania( one beda tylko pisac).Wszytsko jest dobrze za
pierwszym razem, ale gdy for przechodzi po raz drugi i tworzy nowy proces
potomny, lacze jest juz w nim zamkniete i wyskakuje blad close`a.
Ktos wie jak rozwiazac ten problem?
Obserwuj wątek
    • wierzbicki_lukasz Re: [C] Jak zamknac deskryptory w pipe ??? 28.01.06, 11:29
      Może ten opis pomoże:
      lpg.foo-baz.com/node10.html


    • mx-5 Re: [C] Jak zamknac deskryptory w pipe ??? 28.01.06, 14:37
      No wlasnie, dokladnie - tutaj proces macierzysty tworzy proces potomny i w
      potomnym zamykane jest odpowiednie lacze.A jesli dzialam w petli i robie pare
      procesow potomnych, to piewrwszy dziala spoko, przesyla komunikat do
      macierzystego i gdy przychodzi do tworzenia drugiego wywala sie na closie,
      twierdzac iz ten jest zamkniety.Troche to dziwne, poniewaz teoretycznie jest to
      calkowicie nowy proces i nie powinny sie go trzymac ograniczenia nalozone na
      poprzedni...strange :)
      • ktosktomafajnegomisiaczka Re: [C] Jak zamknac deskryptory w pipe ??? 01.02.06, 02:09
        generalnie, sadzac z tego co juz napisales, twoj problem wyglada tak, ze.. owa
        petla wykonuje sie i w procesie parencie i w child'zie. stad, gdy dzieciak
        zamknie pipe'a do czytania, obroci petla i sprobuje zapisac to wszystko bedzie
        oki. tyle ze, najprawdopodobniej jakims pechem, parent wykonuje to samo i
        rowniez zamyka ten uchwyt do czytania. potem obraca petla i tworzy nowego
        child'a. child dostaje kopie uchwytow do pipe'a (w tym czytanie zamkniete!),
        sie odpala, dochodzi do zamkniecia swojego read-pipe'a i sie wywala, bo jego
        uchwyt juz byl zamkniety..

        inny scenariusz: pomyliles w if'ie test na to co jest parentem a co childem. w
        efekcie child w petlach tworzy nowe childy, a parent robi obroty petla i co
        rusz probuje zamknac tego samego pipe'a..

        to tyle radosnej zgadywanki - "podaj mi kod a powiem ci gdzie blad" powiedzial
        ktos bardzo madry kiedys:)
    • mx-5 Re: [C] Jak zamknac deskryptory w pipe ??? 01.02.06, 13:47
      Tak , masz racje za drugim razem jak wchodzi do parenta, to ten juz ma zamkniete
      lacza, bo zamknal je w pierwszym obrocie petli :)

      Thx :]
    • nancyboy Re: [C] Jak zamknac deskryptory w pipe ??? 02.02.06, 10:54
      > Mam nastepujacy problem: w ramach wiekszego projektu zawsze najpierw pisze
      > male programy, zeby zapoznac sie z problemem i tematyka.
      Jeśli uważasz, że to jest problem, to może powinieneś napisać na forum
      "psychologia"... :-)
    • lol_niezly Re: [C] Jak zamknac deskryptory w pipe ??? 02.02.06, 21:34
      Nie ma sie co smiac , ja robie podobnie jak jestem nowy w temacie.
      • ktosktomafajnegomisiaczka Re: [C] Jak zamknac deskryptory w pipe ??? 02.02.06, 21:49
        wlasciwie, kazdy tak robi ;)
        • nancyboy Re: [C] Jak zamknac deskryptory w pipe ??? 03.02.06, 09:24
          No, ale kolega mx-5 uważa, że to jest problem :-)

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka