BIND(2)

BEZEICHNUNG
bind - verbindet einen Namen mit einem Socket.

Diese Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie die englischsprachige Handbuchseite zu Rate, indem Sie

    man -LC 2 bind

eingeben.

ÜBERSICHT
#include <sys/types.h>
#include <sys/socket.h>

int bind(int sockfd, struct sockaddr *my_addr, int addrlen);

BESCHREIBUNG
bind weist dem Socket sockfd die lokale Adresse my_addr zu. my_addr ist addrlen Bytes lang. Traditionsgemäß wird dies "einem Socket einen Namen zuweisen" genannt (wenn ein Socket mit socket(2) erzeugt wird, existiert er in einer Adressfamilie (Namespace), hat aber keinen eigenen Namen.

BEMERKUNGEN
Einen Namen in einer UNIX-Domäne zu binden, erzeugt einen Socket im Dateisystem, welches vom Erzeuger gelöscht werden muss, wenn dieser nicht mehr gebraucht wird (hierzu wird unlink(2) benutzt). Die Regeln, um zwischen verschiedenen Domänen zu Kommunizieren, variieren. Hier sei auf die Handbuchseite in Abschnitt 4 verwiesen.

RÜCKGABEWERTE
Bei erfolgreicher Ausführung wird null zurückgeliefert, bei einem Fehler -1 und errno entsprecht gesetzt.

FEHLER

EBADF
    sockfd ist kein gültiger Deskriptor.

EINVAL
    Der Socket ist bereits an eine Adresse gebunden. Dies kann sich in Zukunft ändern. Siehe linux/unix/sock.c für Details.

EACCES
    Die Adresse ist geschützt und der Benutzer ist nicht der Super-User.

Die folgenden Fehlermeldungen sind spezifisch für UNIX-Domänensockets (AF_UNIX):

EINVAL
    Die addr_len war falsch oder der Socket gehörte nicht zur AF_UNIX Familie.

EROFS
    Die Socket "Inode" sollte auf einem schreibgeschützten Dateisystem residieren.

EFAULT
    my_addr weist auf eine Adresse außerhalb des erreichbaren Adressraumes zu.

ENAMETOOLONG
    my_addr ist zu lang.

ENOENT
    Die Datei existiert nicht.

ENOMEM
    Nicht genug Kernelspeicher vorhanden.

ENOTDIR
    Eine Komponente des Pfad-Präfixes ist kein Verzeichnis.

EACCES
    Keine berechtigung um eine Komponente des Pfad-prefixes zu durchsuchen.

ELOOP
    my_addr enthält eine Kreis-Referenz (zum Beispiel durch einen symbolischen Link)

GESCHICHTE
Der bind Funktionruf erschien zuerst in BSD 4.2.

SIEHE AUCH
accept(2), connect(2), listen(2), socket(2), getsockname(2).