![](https://seccdn.libravatar.org/avatar/04e9b659dabb6ef88308aa2c68abeb3e.jpg?s=120&d=mm&r=g)
"Till Wollenberg" wrote:
Ich frage mich allerdings, ob man zwangsläufig per fork() eine Child-Instanz erzeugen muß? Der Daemon muß nur mit einem "Client" zur gleichen Zeit arbeiten können.
Die fork()-erei ist in diesem Fall dazu gut, daß sich der Dämon aus eigener Kraft in den Hintergrund verabschiedet. Das ist für solche Zwecke üblich, aber natürlich ist es auch möglich, stattdessen immer durch ein "&" hinter dem Kommando dafür zu sorgen, daß es im Hintergrund läuft. Für einen Dämon gehört es aber eigentlich zum guten Ton, das selbst zu tun (plus die ganzen anderen schon erwähnten Kleinigkeiten, die nötig sind, um einen Prozess zu einem richtigen Dämon zu machen). Für das Bedienen mehrerer Clients sind meistens ohnehin Threads sinnvoller als mehrere Prozesse, da der Aufwand geringer ist.
Was passiert allerdings, wenn doch ein zweiter Client versucht, per UDS eine Verbindung herzustellen? Ist die Pseudo-Datei dann wie bei einem Schreibzugriff gesperrt?
Nein. Der Server bindet sich an den Socket, ruft listen() auf und wartet dann mit accept() auf ankommende Verbindungen. Jedesmal erhält er einen neuen Filedescriptor, und mit dem bearbeitet er die einzelne Verbindung. Gleichzeitig kann er aber mit dem Original-Filedescriptor immer noch mit accept() auf weitere ankommenende Verbindungen warten. (Ich bin mal von einem verbindungsorientierten Protokoll ausgegangen. Für Datagram-Sockets entfällt das Problem ohnehin, da es keine feste Verbindung mit einem bestimmten Client gibt.) Eilert -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org - eilert@linuxfreak.com http://www.informatik.uni-bremen.de/~eilert/ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com