geFORK()tes Kind schliesst fremde sockets
Jan-Benedict Glaw
jbglaw at lug-owl.de
Sam Sep 13 16:23:46 CEST 2003
On Sat, 2003-09-13 15:06:34 +0200, martin.heyer at gmx.de <martin.heyer at gmx.de>
wrote in message <30393.1063458394 at www26.gmx.net>:
> > On Sat, 2003-09-13 14:32:22 +0200, martin.heyer at gmx.de
> > <martin.heyer at gmx.de>
> > wrote in message <30775.1063456342 at www13.gmx.net>:
> > Sowas macht man gemeinhin nicht:) Wenn man die Bearbeitung eines Clients
> > abgibt (z.B. an ein via fork() erzeugten Prozeß), dann sollte der
> > _alles_ machen, was für den Client gemacht wird...
> >
> Das ging aber schnell... :)
> Wenn der Child-Prozess ueber exit() aussteigt, dann scheints zu gehen.
> Es sieht aber irgendwie sauberer aus, wenn er das return der main()-Funktion
> nimmt.
> Der geforkte client-Prozess soll alles für den Client machen, aber nicht am
>
> server-Socket (listen) spielen.
Das passiert auch nicht...
> Ich dachte jetzt, die beiden Prozesse greifen über den socketFd auf ein und
> dasselbe
> Socket zu, wenn der eine das schliesst hat der andere Pech.
Nö.
> So ähnlich sieht nämlich auch das Resultat hier aus...
> Oder wird das Socket erst geschlossen, wenn der letzte ein shutdown/close
> gemacht hat?
Beim fork wird der socket kopiert. Generell gibst Du dem Kind ja nur den
fd zum Client mit, nicht den zum listen/bind-Socket. Hast Du Sourcen?
Dann könnten wir einfach mal 'reingucken...
MfG, JBG
--
Jan-Benedict Glaw jbglaw at lug-owl.de . +49-172-7608481
"Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg
fuer einen Freien Staat voll Freier Bürger" | im Internet! | im Irak!
ret = do_actions((curr | FREE_SPEECH) & ~(IRAQ_WAR_2 | DRM | TCPA));
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : nicht verfügbar
Dateityp : application/pgp-signature
Dateigröße : 189 bytes
Beschreibung: nicht verfügbar
URL : http://www.tlug.de/pipermail/tlug_allgemein/attachments/20030913/ee116c3a/attachment.pgp