next up previous contents
Next: Zusammenfassung Kommunikationsbeziehungen Up: Interprozesskommunikation Previous: ipcs und ipcrm   Contents

IPC mit Sockets

Die bisher beschriebenen Möglichkeiten zur Interprozesskommunikation beschränkten sich auf die Kommunikation von Prozessen eines Rechners. Die Socket-Programmierschnittstelle ermöglicht es auch über Rechnergrenzen hinweg, über ein Netzwerk zu kommunizieren. Dies wird genauer im Abschnitt ''Netzwerkkommunikation'' beschrieben (Netzwerkkommunikation).

Eine spezielle Variante der Sockets, die Unix-Domain-Sockets, bieten jedoch auch auch eine einfache Möglichkeit zur lokalen Kommunikation innerhalb eines Rechners.

Unix-Domain-Sockets werden auf die gleiche Art und Weise erstellt und benutzt wie Sockets zur Netzwerkkommunikation. Man muss nur AF_UNIX bzw. AF_LOCAL als Adressfamilie beim socket() Aufruf angeben. Dann kann man mit Hilfe der Struktur sockaddr_un einen Dateinamen angeben, der den Socket im lokalen Dateisystem repräsentiert [include/linux/un.h]:

#define UNIX_PATH_MAX 108 
 
struct sockaddr_un { 
  sa_family_t sun_family; /* AF_UNIX */ 
  char sun_path[UNIX_PATH_MAX]; /* pathname */ 
};
Diese Struktur übergibt man dann dem connect() Aufruf als struct sockaddr* serv_addr wonach dann über den Dateideskriptor mit den üblichen Dateioperationen auf den Socket zugegriffen werden kann.

Auch wenn ein Socket von mehreren Prozessen genutzt werden kann, können Daten nur in 1:1 Beziehung über einen Socket ausgetauscht werden.



2002-02-17