unix | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
unix_socket = socket(PF_UNIX, type, 0);
error = socketpair(PF_UNIX, type, 0, int *sv);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Les types valides sont : SOCK_STREAM, pour une socket orientée flux et SOCK_DGRAM, pour une socket orientée datagramme, préservant les limites entre messages (comme sur la plupart des implémentations Unix, les sockets datagramme de domaine Unix sont toujours fiables et ne réordonnent pas les datagrammes) ; et (depuis Linux 2.6.4) SOCK_SEQPACKET, pour un socket orientée connexion, préservant les limites entre messages et délivrant les messages dans l'ordre où ils ont été envoyés.
Les sockets Unix supportent la transmission de descripteurs de fichiers ou d'identificateurs d'un processus à l'autre en utilisant des données annexes.
Format d'adresse | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#define UNIX_PATH_MAX 108 struct sockaddr_un { sa_family_t sun_family; /* AF_UNIX */ char sun_path[UNIX_PATH_MAX]; /* chemin accès */ };
sun_family contient toujours la valeur AF_UNIX. sun_path contient le chemin d'accès à la socket, terminé par un zéro, dans le système de fichiers. Si sun_path commence par un octet nul, il se réfère à l'espace abstrait maintenu par le module du protocole Unix. L'adresse de la socket dans cet espace est donné par le reste des octets dans sun_path. Notez que les noms dans l'espace abstrait ne sont pas terminés par un zéro.
Options des sockets | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Fonctionnalités (non) supportées | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Les sockets de domaine unix ne supportent pas la transmission de données hors-bande (l'attribut MSG_OOB pour send(2) et recv(2)).
L'attribut MSG_MORE de send(2) n'est pas supporté par les sockets de domaine Unix.
L'option SO_SNDBUF a un effet pour les sockets de domaine Unix, mais l'option SO_RCVBUF n'en a pas. pour les sockets datagramme, la valeur SO_SNDBUF impose une limite supérieure sur la taille des datagrammes sortants. Cette limite est calculée comme étant le double (voir socket(7)) de la valeur de l'option moins 32 octets utilisés pour l'entête.
Messages annexes | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
struct ucred { pid_t pid; /* PID processus émetteur */ uid_t uid; /* UID processus émetteur */ gid_t gid; /* GID processus émetteur */ };
Les identifiants que l'émetteur envoie sont vérifiés par le noyau. Un processus avec un UID effectif nul est autorisé à indiquer des valeurs autres que les siennes. L'émetteur doit indiquer son propre PID (sauf s'il a la capacité CAP_SYS_ADMIN), son UID réel, effectif ou sauvé (sauf s'il a la capacité CAP_SETUID), et son GID réel, effecif ou sauvé (sauf s'il a la capacité CAP_SETGID). Pour recevoir un message struct ucred, l'option SO_PASSCRED doit être validée sur la socket.
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
D'autres erreurs peuvent être déclenchées par le niveau socket générique ou par le système de fichiers. Voir les pages de manuel correspondantes pour plus de détails.
VERSIONS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Lier une socket avec un nom de fichier crée la socket dans le système de fichier, qu'il faudra détruire lorsqu'elle n'est plus utile (en appelant unlink(2)). La sémantique habituelle Unix s'applique ; la socket peut être effacée à tout moment, et sera effectivement supprimée lorsque sa dernière référence sera fermée.
Pour passer un descripteur ou des identifiants par dessus un SOCK_STREAM, il faut envoyer ou recevoir au moins un octet de donnée non-méta dans l'appel correspondant.
Les sockets flux Unix ne supportent pas la notion de données hors-bande.
EXEMPLE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <ccb AT club-internet DOT fr> le 25 juillet 2003, mise à jour par Alain Portal <aportal AT univ-montp2 DOT fr> le 23 décembre 2005 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 7 unix ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
EADDRINUSE | ERREURS |
ECONNREFUSED | ERREURS |
ECONNRESET | ERREURS |
EFAULT | ERREURS |
EINVAL | ERREURS |
EISCONN | ERREURS |
ENOMEM | ERREURS |
ENOTCONN | ERREURS |
EOPNOTSUPP | ERREURS |
EPERM | ERREURS |
EPIPE | ERREURS |
EPROTONOSUPPORT | ERREURS |
EPROTOTYPE | ERREURS |
ESOCKTNOSUPPORT | ERREURS |
SCM_CREDENTIALS | Messages annexes |
SCM_RIGHTS | Messages annexes |
SO_PASSCRED | Options des sockets |