Unix Domain Socket
POSIX local inter-process communication sockets (auch Unix Domain Socket oder IPC Socket) sind Endpunkte von bidirektionalen Kommunikationsverbindungen bei der lokalen Interprozesskommunikation (IPC) unter Unix-Betriebssystemen. Die Kommunikation über diese Sockets ist die im POSIX-Standard standardisierte Methode zur Interprozesskommunikation für Unix-ähnliche Systeme. Entsprechend der Unix-Philosophie („alles ist eine Datei“) sind Sockets über einen Inode im Dateisystem adressierbar und werden mit denselben Befehlen angesprochen wie gewöhnliche Dateien. Um zu kommunizieren, öffnen zwei Prozesse denselben Socket. Die Daten fließen als Bytestrom über Pufferspeicher im Speicher des Kernels. Neben Daten können über die Socketverbindungen mit den Systemaufrufen sendmsg() und recvmsg() auch Datei-Handles übertragen werden.
Literatur
- W. Richard Stevens, Bill Fenner, Andrew M. Rudoff: UNIX Network Programming. The Sockets Networking API. Volume 1. 3. Auflage. Addison Wesley, 2004, ISBN 0-13-141155-1, 15. Unix Domain Protocols, S. 411–433.
- W. Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment. 2. Auflage. Addison Wesley, 2005, ISBN 0-321-52594-9, 17.3 UNIX Domain Sockets, S. 594–601.
- Johannes Plötner, Steffen Wendzel: Linux. Das umfassende Handbuch. 5. Auflage. Galileo, 2012, ISBN 978-3-8362-1822-1 (Inhaltsverzeichnis – 26.6.5 Unix-Domain-Sockets).
Weblinks
socketpair(2)
: zwei verbundene Sockets erstellen – Debian GNU/Linux Systemaufrufe Handbuchseitesocketpair(2)
: create a pair of connected sockets – OpenBSD System Calls Manual (Erzeugen miteinander verbundener Sockets)sendmsg(2)
: send a message from a socket – OpenBSD System Calls Manual (Verschicken von Nachrichten über ein Socket)recvmsg(2)
: receive a message from a socket – OpenBSD System Calls Manual (Empfangen von Nachrichten über ein Socket)cmsg(3)
: access ancillary data – Debian Linux Programmer's Manual (Senden/Empfangen/Verwalten von Zusatzinformationen)- Vergleich zwischen Unix Domain Sockets und Internet Sockets unter FreeBSD, 2005 (englisch)
- Unix Domain Sockets für Java (englisch)
- ucspi-unix, Client und Server Implementation von UCSPI über UNIX-Domain-Sockets (englisch)