EnderUNIX Team.


EnderUNIX İpucu

Arkadaşıma gönder , Ana Sayfa

[ C/C++ ]

"Daemon'da alt surec sonlaninca kim handle eder?" - Barış Şimşek - (2005-09-23 17:11:07)   [3141]


1 O ana_surec()
|
2 O daemon, accept()
|
3 O alt_surec()


Daemon'da genel mantik yukaridaki gibidir. Bizim kodladigimiz surec(1)

init_daemon()
icinde de gorulecegi gibi fork() yapar ve daemon'i(2) baslatir. Daemon ise baglanti geldikce alt surec olusturup istekleri yerine getirir.

Daemon(2) alt surecin(3) nasil sonlandigindan haberdar olmak icin signal_handler icinde SIG_CHLD'yi isler ve wait ile alt surecin durumunu alir. Ancak bu signal_handler fork nedeni ile miras olarak aynen alt surece de gecer. Alt surec sayet kendisi de fork yapip exec yapiyorsa, exec edilen surec bitince SIG_CHLD alt surece miras kalan signal handler ile islenir. Bunun icinde ise wait vardir. Oysa alt surecin kendisi de calistirdigi sureci wait ile beklemektedir. Hem zombie olmamasi icin, hem de durumunu ogrenmek icin. Iste signal handler tarafindan wait edilen surec, ikinci kez wait edilmeye calisilacagindan wait, "No child process" gibi bir hata verir.

Cozum olarak alt surece miras kalan signal handler'dan SIG_CHLD cikarilir.



Arkadaşıma gönder , Ana Sayfa