.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1983, 1990, 1991 The Regents of the University of California. .\" All rights reserved. .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\" Modified 1993-07-24 by Rik Faith .\" Modified 1996-10-21 by Eric S. Raymond .\" Modified 1998-2000 by Andi Kleen to match Linux 2.2 reality .\" Modified 2002-04-23 by Roger Luethi .\" Modified 2004-06-17 by Michael Kerrisk .\" 2008-12-04, mtk, Add documentation of accept4() .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH accept 2 "2 mai 2024" "Pages du manuel de Linux 6.8" .SH NOM accept, accept4 \- Accepter une connexion sur un socket .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBint accept(int \fP\fIsockfd\fP\fB, struct sockaddr *_Nullable restrict \fP\fIaddr\fP\fB,\fP \fB socklen_t *_Nullable restrict \fP\fIaddrlen\fP\fB);\fP .P \fB#define _GNU_SOURCE\fP /* Consultez feature_test_macros(7) */ \fB#include \fP .P \fBint accept4(int \fP\fIsockfd\fP\fB, struct sockaddr *_Nullable restrict \fP\fIaddr\fP\fB,\fP \fB socklen_t *_Nullable restrict \fP\fIaddrlen\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .SH DESCRIPTION L'appel système \fBaccept\fP() est employé avec les sockets utilisant un protocole en mode connecté (\fBSOCK_STREAM\fP, \fBSOCK_SEQPACKET\fP). Il extrait la première connexion de la file des connexions en attente du socket \fIsockfd\fP à l'écoute, crée un nouveau socket et alloue pour ce socket un nouveau descripteur de fichier qu'il renvoie. Le nouveau socket n'est pas en état d'écoute. L socket original \fIsockfd\fP n'est pas modifié par l'appel système. .P L'argument \fIsockfd\fP est un socket qui a été créé avec la fonction \fBsocket\fP(2), attaché à une adresse avec \fBbind\fP(2), et attend des connexions après un appel \fBlisten\fP(2). .P L'argument \fIaddr\fP est un pointeur sur une structure \fIsockaddr\fP. La structure sera remplie avec l'adresse du correspondant se connectant, telle qu'elle est connue par la couche de communication. Le format exact du paramètre \fIaddr\fP dépend du domaine dans lequel la communication s'établit (consultez \fBsocket\fP(2) et la page de manuel correspondant au protocole). Quand \fIaddr\fP vaut NULL, rien n'est rempli ; dans ce cas, \fIaddrlen\fP n'est pas utilisé et doit aussi valoir NULL. .P \fIaddrlen\fP est un paramètre\-résultat\ : l'appelant doit l'initialiser de telle sorte qu'il contienne la taille (en octets) de la structure pointée par \fIaddr\fP, et est renseigné au retour par la longueur réelle (en octets) de l'adresse remplie. .P L'adresse renvoyée est tronquée si le tampon fourni est trop petit ; dans ce cas, \fIaddrlen\fP renverra une valeur supérieure à celle fournie lors de l'appel. .P S'il n'y a pas de connexion en attente dans la file, et si le socket n'est pas marqué comme non bloquant, \fBaccept\fP() se met en attente d'une connexion. Si le socket est non bloquant, et qu'aucune connexion n'est présente dans la file, \fBaccept\fP() retourne une erreur \fBEAGAIN\fP ou \fBEWOULDBLOCK\fP. .P Pour être prévenu de l'arrivée d'une connexion sur un socket, on peut utiliser \fBselect\fP(2), \fBpoll\fP(2) ou \fBepoll\fP(7). Un événement «\ lecture\ » sera délivré lorsqu'une tentative de connexion aura lieu, et on pourra alors appeler \fBaccept\fP() pour obtenir un socket pour cette connexion. Autrement, on peut configurer le socket pour qu'il envoie un signal \fBSIGIO\fP lorsqu'une activité le concernant se produit, consultez \fBsocket\fP(7) pour plus de détails. .P Si \fIflags\fP vaut \fB0\fP alors \fBaccept4\fP() est identique à \fBaccept\fP(). Les valeurs suivantes peuvent être combinées dans \fIflags\fP par un OU binaire pour obtenir un comportement différent : .TP 16 \fBSOCK_NONBLOCK\fP Placer l'attribut d'état de fichier \fBO_NONBLOCK\fP sur la description du fichier ouvert référencée par le nouveau descripteur de fichier (consulter \fBopen\fP(2)). Utiliser cet attribut économise des appels supplémentaires à \fBfcntl\fP(2) pour obtenir le même résultat. .TP \fBSOCK_CLOEXEC\fP Placer l'attribut « close\-on\-exec » (\fBFD_CLOEXEC\fP) sur le nouveau descripteur de fichier. Consultez la description de l'attribut \fBO_CLOEXEC\fP dans \fBopen\fP(2) pour savoir pourquoi cela peut être utile. .SH "VALEUR RENVOYÉE" S'ils réussissent, ces appels système renvoient un descripteur de fichier pour le socket accepté (un entier positif ou nul). En cas d'erreur, ils renvoient \fB\-1\fP, \fIerrno\fP est positionné pour indiquer l'erreur et \fIaddrlen\fP est laissé inchangé. .SS "Traitement des erreurs" Sous Linux, \fBaccept\fP() (et \fBaccept4\fP()) renvoie les erreurs réseau déjà en attente sur le nouveau socket comme une erreur de l'appel système. Ce comportement diffère d'autres implémentations des sockets BSD. Pour un comportement fiable, une application doit détecter les erreurs réseau définies par le protocole après le \fBaccept\fP() et les traiter comme des erreurs \fBEAGAIN\fP, en réitérant le mécanisme. Dans le cas de TCP/IP, ces erreurs sont \fBENETDOWN\fP, \fBEPROTO\fP, \fBENOPROTOOPT\fP, \fBEHOSTDOWN\fP, \fBENONET\fP, \fBEHOSTUNREACH\fP, \fBEOPNOTSUPP\fP, et \fBENETUNREACH\fP. .SH ERREURS .TP \fBEAGAIN\fP ou \fBEWOULDBLOCK\fP .\" Actually EAGAIN on Linux Le socket est marqué comme étant non bloquant et aucune connexion n'est présente pour être acceptée. POSIX.1\-2001 et POSIX.1\-2008 permettent de renvoyer l'une ou l'autre des erreurs dans ce cas et n'exige pas que ces constantes aient la même valeur. Une application portable devrait donc tester les deux possibilités. .TP \fBEBADF\fP \fIsockfd\fP n'est pas un descripteur de fichier valable. .TP \fBECONNABORTED\fP Une connexion a été abandonnée. .TP \fBEFAULT\fP \fIaddr\fP n'est pas dans l'espace d'adressage accessible en écriture. .TP \fBEINTR\fP L'appel système a été interrompu par l'arrivée d'un signal avant qu'une connexion valable ne survienne ; consultez \fBsignal\fP(7). .TP \fBEINVAL\fP Le socket n'est pas en attente de connexions, ou \fIaddrlen\fP est non autorisée (par exemple négatif). .TP \fBEINVAL\fP (\fBaccept4\fP()) \fIflags\fP contient une valeur incorrecte. .TP \fBEMFILE\fP La limite du nombre de descripteurs de fichiers par processus a été atteinte. .TP \fBENFILE\fP La limite du nombre total de fichiers ouverts pour le système entier a été atteinte. .TP \fBENOBUFS\fP .TQ \fBENOMEM\fP Pas assez de mémoire disponible. En général, cette erreur est due à la taille limitée du tampon des sockets, et non à la mémoire système proprement dite. .TP \fBENOTSOCK\fP Le descripteur de fichier \fIsockfd\fP ne fait pas référence à un socket. .TP \fBEOPNOTSUPP\fP Le socket utilisé n'est pas de type \fBSOCK_STREAM\fP. .TP \fBEPERM\fP Les règles du pare\-feu interdisent la connexion. .TP \fBEPROTO\fP Erreur de protocole. .P De plus il peut se produire des erreurs réseau dépendant du protocole du socket. Certains noyaux Linux peuvent renvoyer d'autres erreurs comme \fBENOSR\fP, \fBESOCKTNOSUPPORT\fP, \fBEPROTONOSUPPORT\fP, \fBETIMEDOUT\fP. L'erreur \fBERESTARTSYS\fP peut être rencontrée durant un suivi dans un débogueur. .SH VERSIONS .\" Some testing seems to show that Tru64 5.1 and HP-UX 11 also .\" do not inherit file status flags -- MTK Jun 05 Avec la version Linux de \fBaccept\fP(), le nouveau socket n'hérite \fBpas\fP des attributs comme \fBO_NONBLOCK\fP et \fBO_ASYNC\fP du socket en écoute. Ce comportement est différent de l'implémentation BSD de référence. Les programmes portables ne doivent pas s'appuyer sur cette particularité, et doivent reconfigurer les attributs sur le socket renvoyé par \fBaccept\fP(). .SH STANDARDS .TP \fBaccept\fP() POSIX.1\-2008. .TP \fBaccept4\fP() Linux. .SH HISTORIQUE .TP \fBaccept\fP() .\" The BSD man page documents five possible error returns .\" (EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT). .\" POSIX.1-2001 documents errors .\" EAGAIN, EBADF, ECONNABORTED, EINTR, EINVAL, EMFILE, .\" ENFILE, ENOBUFS, ENOMEM, ENOTSOCK, EOPNOTSUPP, EPROTO, EWOULDBLOCK. .\" In addition, SUSv2 documents EFAULT and ENOSR. POSIX.1\-2001, SVr4, 4.4BSD (\fBaccept\fP() est apparu dans 4.2BSD). .TP \fBaccept4\fP() Linux 2.6.28, glibc 2.10. .SH NOTES Il n'y a pas nécessairement de connexion en attente après la réception de \fBSIGIO\fP ou après que \fBselect\fP(2), \fBpoll\fP(2) ou \fBepoll\fP(7) indiquent quelque chose à lire. En effet la connexion peut avoir été annulée à cause d'une erreur de réseau asynchrone ou par un autre thread avant que \fBaccept\fP() ne soit appelé. Si cela se produit, l'appel bloquera en attendant une autre connexion. Pour s'assurer que \fBaccept\fP() ne bloquera jamais, le socket \fIsockfd\fP transmis doit avoir l'attribut \fBO_NONBLOCK\fP (consultez \fBsocket\fP(7)). .P .\" Pour certains protocoles nécessitant une confirmation explicite, comme DECNet, \fBaccept\fP() peut être considéré comme extrayant simplement la connexion suivante de la file, sans demander de confirmation. On peut effectuer la confirmation par une simple lecture ou écriture sur le nouveau descripteur, et le rejet en fermant le nouveau socket. Pour le moment, seul DECNet se comporte ainsi sous Linux. .SS "Le type socklen_t" .\" such as Linux libc4 and libc5, SunOS 4, SGI .\" SunOS 5 has 'size_t *' Dans l'implémentation des sockets de BSD originale (et sur d'autres anciens systèmes), le troisième paramètre de \fBaccept\fP() était déclaré en tant que \fIint\ *\fP. Un brouillon du standard POSIX.1g voulait le changer pour \fIsize_t\ *\fPC ; les derniers standards POSIX et glibc\ 2.x mentionnent \fIsocklen_t\ * \fP. .SH EXEMPLES Consultez \fBbind\fP(2). .SH "VOIR AUSSI" \fBbind\fP(2), \fBconnect\fP(2), \fBlisten\fP(2), \fBselect\fP(2), \fBsocket\fP(2), \fBsocket\fP(7) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Cédric Boutillier , Frédéric Hantrais et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .