socket serverdaemon wieder beenden
-
Hallo wissende,
ich stehe hier vor einem Problem.
ich habe einen server-daemon programmiert, und das klappt auch alles ganz gut. Jezt würde ich aber auch gerne eine stop() funktion haben, ohne das Programm zu killen.
Wie kann ich jetzt am besten den durch accept() "eingefrorenen" thread stoppen, und den socket richtig schließen, ohne dass es irgendwelche Fehler gibt?Man kann den thread ja nicht anhand einer id "auslaufen" lassen, da er "eingefroren" ist.
Danke schonmal im Voraus
mfg jghj
-
Du hast also einen Thread, der blockierend auf eine Verbindung wartet? Wenn Du aus einem anderen Thread den socket schließt, wird accept mit einem Fehlercode beenden, auf den Du reagieren kannst.
Wenn Du nicht bewußt auf eine Fehler laufen willst, kannst Du eine Pipe erstellen und poll verwenden, um im Arbeiterthread das lesende Ende der Pipe und den Socket zu überwachen, also nicht blockierend auf accept warten. Wenn Du den Thread beenden willst, schreibst Du ein Zeichen auf die Pipe, was den Arbeiterthread weckt. Er kann dann entsprechend reagieren.
Gruß
Tommi