bind(3N) bind(3N)
NAME
bind - Verbindung von einem Namen zu einem Socket herstellen
SYNTAX
#include <sys/types.h>
#include <sys/socket.h>
int bind(int s, const struct sockaddr *name, int namelen);
BESCHREIBUNG
bind() weist einem Socket einen Namen zu. Wenn ein Socket mit
socket(3N) erzeugt wird, existiert er innerhalb eines bestimmten
Namensraumes (der Adreßfamilie), besitzt jedoch noch keinen Namen.
bind() veranlaßt, daß der Name, auf den durch name verwiesen wird, dem
Socket zugewiesen wird.
HINWEISE
Wird einem Socket in der UNIX Adreßfamilie mit bind() ein Namen
zugeordnet, so wird ein Socket im UNIX Dateisystem erzeugt, der durch
den Aufrufer gelöscht werden muß, wenn er nicht mehr benötigt wird
[durch unlink(2)].
Die Regeln, die bei der Namensbindung benutzt werden, unterscheiden
sich in den einzelnen Adreßfamilien.
RÜCKGABEWERT
Falls bind erfolgreich abläuft, wird der Wert 0 zurückgegeben. Der
Rückgabewert -1 zeigt einen Fehler an, der in der globalen Variable
errno näher spezifiziert ist.
DIAGNOSE
Der bind()-Aufruf schlägt in folgenden Fällen fehl:
EBADF s ist kein gültiger Dateideskriptor.
ENOTSOCK s verweist nicht auf einen Socket.
EADDRNOTAVAIL Die angegebene Adresse ist auf dem lokalen Rechner
nicht verfügbar.
EADDRINUSE Die angegebene Adresse wird bereits verwendet.
EINVAL namelen entspricht nicht der Länge einer gültigen
Adresse für die angegebene Adreßfamilie.
EINVAL Der Socket ist bereits an eine Adresse gebunden.
EACCES Die angeforderte Adresse ist geschützt, und der
aktuelle Benutzer hat nicht die entsprechende
Erlaubnis, darauf zuzugreifen.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
bind(3N) bind(3N)
ENOSR Es waren nicht genügend STREAMS-Betriebsmittel ver-
fügbar, um die Operation durchzuführen.
Die nun folgenden Fehler sind spezifisch für Adressen in der UNIX
Domäne:
ENOTDIR Eine Komponente des Präfixes im Pfadnamen von name
ist kein Verzeichnis.
ENOENT Eine Komponente des Präfixes im Pfadnamen von name
existiert nicht.
EACCES Die Sucherlaubnis für eine Komponente des Präfixes
im Pfadnamen von name wurde nicht gegeben.
ELOOP Es wurden bei der Umsetzung des Pfadnamens zu viele
symbolische Verweise in name entdeckt.
EIO Während des Anlegens eines Verzeichniseintrags oder
beim Anlegen des Inodes ist ein E/A-Fehler aufgetre-
ten.
EROFS Der Inode befindet sich auf einem Dateisystem, das
nur lesbar ist.
EISDIR Es wurde ein Pfadname mit Wert Null angegeben.
SIEHE AUCH
unlink(2), socket(3N).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98