Rainer Weikusat <
rwei...@mssgmbh.com> schrieb:
>> Kann man das Verhalten ändern? So dass das Betriebssystem den Prozess
>> irgendwie informiert (SIGNAL?), wenn sein Socket unerreichbar wird?
>
> Meines Wissens nach nein.
Das beruhigt mich in sofern, als dass ich nichts gröblich übersehen
habe.
> Falls Dein Zielsystem Dir ein API anbietet,
> mit dessen Hilfe ein Prozess von Aenderungen im Dateisystem
> unterrichtet werden kann (zB dnotify oder inotify fuer Linux)
> koenntest Du das benutzen.
Ja, ist zur Zeit ein Linux (CentOS 6), da gibt es 'inotify'.
> Andernfalls bliebe nur die Moeglichkeit, in
> regelmaessigen Abstaenden 'probe'-Nachrichten an die Socketaddresse zu
> schicken und auf dabei auftretende Fehler oder auf das Phaenomen, dass
> diese Nachrichten den Server-Teil nie erreichen (weil mittlerweile
> 'jemand anderes' eine neue Socket mit diesem Namen erzeugt hat)
> entsprechend zu reagieren.
So einen Weg hatte ich auch schon angedacht, dass der Server sich von
Zeit zu Zeit selbst eine "Testnachricht" sendet, und wenn er die nicht
mehr empfängt, dann einfach "den Löffel" abgibt.
Andererseits frisst so ein Server-Prozess, der in einem recv()-Aufruf
blockiert ist, auch nicht viele Resourcen. (Der Speicherbedarf ist
statisch und ohnehin sehr gering.) Und sowieso soll der Fall ja gar
nicht eintreten und überhaupt...
Ich mag es freilich, wenn Programme, für die ich die Verantwortung
(übernommen) habe, auch robust sind und auch in Betriebssituationen, von
denen ich fest überzeugt war, dass sie niemals auftreten werden, noch
sinnvoll agieren (z.B. Fehlermeldung und Tschüß).
Danke für Deine schnelle Antwort.
Jochen
--
"Wer die Freiheit aufgibt, um Sicherheit zu gewinnen,
der wird am Ende beides verlieren"