BIND(2)

NOM
bind - Fournir un nom a une socket.

SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>

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

DESCRIPTION
bind fournit a la socket sockfd, l'adresse locale my_addr. my_addr est longue de addrlen octets. Traditionnellement cette operation est appellee "assignation d'un nom a une socket" (Quand une socket est creee, par l'appel-systeme socket(2), elle existe dans l'espace des noms mais n'a pas de nom assigne).

NOTES
Assigner un nom dans le domaine UNIX cree une socket dans le systeme de fichier, qui devra etre detruite par le createur une fois qu'il n'en a plus besoin, en utilisant unlink(2). Les regles d'assignation de nom varient suivant le domaine de communication. Consultez le manuel du programmeur Linux section 4 pour de plus amples informations.

VALEUR RENVOYEE
bind renvoie 0 s'il reussit, ou -1 s'il echoue, auquel cas errno contient le code d'erreur.

ERREURS

EBADF
    sockfd n'est pas un descripteur valide.

ENOTSOCK
    L'argument est un descripteur de fichier, pas une socket.

EADDRINUSE
    La socket a deja une adresse assignee.

EACCES
    L'adresse est protegee et l'utilisateur n'est pas le Super-User.

Les erreurs suivantes sont specifiques au domaine UNIX (AF_UNIX):

EINVAL
    La longueur addr_len est fausse, ou la socket n'est pas de la famille AF_UNIX.

EROFS
    L'i-noeud de la socket se trouverait dans un systeme de fichiers en lecture seule.

EFAULT
    my_addr pointe en dehors de l'espace d'adresse accessible.

ENAMETOOLONG
    my_addr est trop long

ENOENT
    Le fichier n'existe pas.

ENOMEM
    pas assez de memoire pour le noyau.

ENOTDIR
    Un composant du chemin d'acces n'est pas un repertoire.

EACCES
    L'acces a un composant du chemin d'acces n'est pas autorise.

ELOOP
    my_addr contient des references circulaires (a travers un lien symbolique).

CONFORMITE
SVr4, BSD 4.4 (l'appel systeme bind apparait dans BSD 4.2). SVr4 indique des conditions generales d'erreur supplementaires EADDRNOTAVAIL, EADDRINUSE, ENOFS, et les conditions d'erreurs specifiques au domaine Unix en plus EIO, EISDIR, EROFS.

VOIR AUSSI
accept(2), connect(2), listen(2), socket(2), getsockname(2)