Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C - Kończenie procesu potomnego przed macierzystym

michal2409 18 Lis 2012 14:54 636 2
  • #1 18 Lis 2012 14:54
    michal2409
    Poziom 12  

    Witam!
    Od jakiegoś czasu głowię się, jak zrobić, żeby zakończyć proces potomny przed macierzystym, aby macierzysty mógł zostać powiadomiony sygnałem, że potomny się skończył.
    Napisałem coś takiego, ale nie działa:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 2
  • #2 19 Lis 2012 13:49
    szelus
    Specjalista - Mikrokontrolery

    Wołanie czegokolwiek po exit() jest bez sensu, bo sterowanie z funkcji exit() nigdy nie wraca - proces zostaje zakończony.
    Przejmowanie sygnału (funkcją signal() ) trzeba uaktywnić przed wystąpieniem tego sygnału - to chyba powinno być oczywiste?
    Dodatkowo, aby mieć pewność, że proces macierzysty przejmie sygnał SIGCHLD kończącego się procesu potomnego, funkcję signal() z odpowiednimi argumentami trzeba zawołać przed utworzeniem procesu potomnego. Jeżeli wołanie signal następuje po fork() to sygnał może być przedmiotem wyścigu.

    0
  • #3 19 Lis 2012 13:58
    michal2409
    Poziom 12  

    Wiem właśnie, już to zrobiłem, głupie błędy :/
    W skrócie wywołanie signal() dałem przed fork(), exit() z potomka wyrzuciłem, wait() z rodzica też wyrzuciłem, dodałem sleep() rodzicowi, i wszystko działa jak należy.

    0