Linux

CentOS 4.8

bind(2)


BIND

NOM

bind − Fournir un nom à une socket.

SYNOPSIS

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

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

DESCRIPTION

bind fournit à la socket sockfd, l’adresse locale my_addr. my_addr est longue de addrlen octets. Traditionnellement cette opération est appelée "assignation d’un nom à une socket" (Quand une socket est créée, par l’appel-système socket(2), elle existe dans l’espace des noms mais n’a pas de nom assigné).

NOTES

Assigner un nom dans le domaine UNIX crée une socket dans le système de fichier, qui devra être détruite par le créateur une fois qu’il n’en a plus besoin, en utilisant unlink(2).

Les règles d’assignation de nom varient suivant le domaine de communication. Consultez le manuel du programmeur Linux section 4 pour de plus amples informations.

VALEUR RENVOYÃE

bind renvoie 0 s’il réussit, ou −1 s’il échoue, auquel cas errno contient le code d’erreur.

ERREURS

EBADF

sockfd n’est pas un descripteur valide.

EACCES

L’adresse est protégée et l’utilisateur n’est pas le Super−User.

ENOTSOCK

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

EADDRINUSE

La socket a déjà une adresse assignée.

Les erreurs suivantes sont spécifiques 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 système 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 mémoire pour le noyau.

ENOTDIR

Un composant du chemin d’accès n’est pas un répertoire.

EACCES

L’accès à un composant du chemin d’accès n’est pas autorisé.

ELOOP

my_addr contient des références circulaires (à travers un lien symbolique).

CONFORMITÃ

SVr4, BSD 4.4 (l’appel système bind apparaît dans BSD 4.2). SVr4 indique des conditions générales d’erreur supplémentaires EADDRNOTAVAIL, EADDRINUSE, et ENOSR, ainsi que les conditions d’erreurs spécifiques au domaine Unix EIO et EISDIR.

NOTE

Le troisième argument de bind est en fait un int (et c’est ce qu’utilisent BSD 4.*, libc4 et libc5). Une certaine confusion POSIX résulte du "socklen_t" actuel. Pour plus de détails voir accept(2).

VOIR AUSSI

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

TRADUCTION

Christophe Blaess, 1997.


bind(2)