|
|||||||
|
|
UNIXSection: Manuel de l'administrateur Linux (7)Updated: 25 juillet 2003 Index Return to Main Contents NOMunix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL - Sockets pour communications locales entre processus.SYNOPSIS#include <sys/socket.h>#include <sys/un.h>
unix_socket = socket(PF_UNIX, type, 0);
DESCRIPTIONLa famille de socket PF_UNIX (aussi connue sous le nom PF_LOCAL) sert à communiquer efficacement entre processus sur la même machine. Une socket Unix peut être soit anonyme (créée par socketpair(2)) soit associée à un fichier de type socket. Linux supporte aussi un espace de noms abstrait, indépendant du système de fichiers.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. Les socket Unix sont toujours fiables et ne réordonnent pas les datagrammes. 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'ADRESSEUne adresse Unix est définie comme un nom dans le système de fichier ou une chaîne unique dans l'espace de noms abstrait. Les sockets créées par socketpair(2) sont anonymes. Pour les sockets non-anonymes, l'adresse cible peut être indiquée en utilisant connect(2). L'adresse locale peut être fixée avec bind(2). Quand une socket est connectée et qu'elle n'a pas encore d'adresse locale, une adresse unique dans l'espace de noms abstrait lui est automatique founie.
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 SOCKETSPour des raisons historiques, les options de ces sockets sont spécifiées avec un type SOL_SOCKET même si elles sont spécifiques PF_UNIX. On peut les fixer avec setsockopt(2) et les lire avec getsockopt(2) en spécifiant la famille SOL_SOCKET.
MESSAGES ANNEXESLes données annexes sont envoyées et reçues en utilisant sendmsg(2) et recvmsg(2). Pour des raisons historiques, les messages annexes listés ci-dessous sont spécifiés avec un type SOL_SOCKET même s'ils sont sépcifiques PF_UNIX. Pour les envoyer, fixez le champ cmsg_level de la structure cmsghdr à SOL_SOCKET et le champ cmsg_type avec le type du message. Pour plus de détails, voir cmsg(3).
VERSIONSSCM_CREDENTIALS et l'espace de noms abstrait ont été introduits avec Linux 2.2 et ne doivent pas être utilisés dans des programmes portables. (Certains systèmes dérivés de BSD supportent aussi le passage d'identifiants, mais les détails d'implémentation diffèrent).NOTESDans l'implémentation Linux, les sockets qui sont visibles dans le système de fichiers honorent les permissions du répertoire où elles se trouvent. Leur propriétaire, groupe et autorisations peuvent être changées. La création d'une nouvelle socket échouera si le processus n'a pas le droit d'écrire et de parcours (exécution) dans le répertoire où elle est créée. La connexion sur une socket nécessite les permissions de lecture/écriture. Le comportement diffère de plusieurs systèmes dérivés de BSD qui ignorent les permissions sur les sockets Unix. Les programmes portable ne doivent pas s'appuyer sur ces fonctionnalités pour la sécurité.Lier une socket avec un nom de fichier créer 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, il faut envoyer ou recevoir au moins un octet de donnée. Les sockets flux Unix ne supportent pas la notion de données hors-bande. ERREURS
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. VOIR AUSSIrecvmsg(2), sendmsg(2), socket(2), socketpair(2), cmsg(3), capabilities(7), socket(7)AUTEURCette page de manuel a été écrite par Andi Kleen.TRADUCTIONChristophe Blaess, 2003.
Index
| ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man7". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |