Provided by: manpages-fr-dev_2.64.1-1_all bug

NOM

       sockatmark  -  Déterminer  si  la socket a atteint la marque de données
       hors-bande

SYNOPSIS

       #include <sys/socket.h>

       int sockatmark(int fd);

   Exigences pour les macros de test de fonctionnalité de la glibc  (consultez
   feature_test_macros(7)) :

       sockatmark() : _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600

DESCRIPTION

       sockatmark()  renvoie  une  valeur  indiquant  si  oui ou non la socket
       référencée par le descripteur de fichier fd a  atteint  une  marque  de
       données  hors-bande.  Si  la  socket  a  atteint la marque, la fonction
       renvoie 1, sinon elle renvoie 0. Cette  fonction  ne  supprime  pas  la
       marque de données hors-bande.

VALEUR RENVOYÉE

       Un  appel  réussit  à  sockatmark() renvoie 1 si la socket a atteint la
       marque de données hors-bande, ou  0  dans  le  cas  contraire.  En  cas
       d’erreur, elle renvoie -1 et écrit errno en conséquence.

ERREURS

       EBADF  fd n’est pas un descripteur de fichier valide.

       EINVAL fd  n’est  pas un descripteur de fichier sur lequel sockatmark()
              peut s’appliquer.

VERSIONS

       sockatmark() a été ajoutée à la glibc dans la version 2.2.4.

CONFORMITÉ

       POSIX.1-2001

NOTES

       Si sockatmark() renvoie 1, les données hors-bande peuvent être lues  en
       utilisant l’attribut MSG_OOB de recv(2).

       Les  données  hors-bande ne sont supportées que par certains protocoles
       de socket de flux.

       sockatmark() peut être appelée de manière sûre par un gestionnaire pour
       le signal SIGURG.

       sockatmark()   est   implémentée   en  utilisant  l’opération  ioctl(2)
       SIOCATMARK.

BOGUES

       Avant la glibc 2.4, sockatmark() ne fonctionnait pas.

EXEMPLE

       Le code suivant peut être utilisé après la réception d’un signal SIGURG
       pour  lire  (et  abandonner)  toutes  les  données jusqu’à la marque de
       données hors-bande, puis lit l’octet de donnée à la marque :

           char buf[BUF_LEN];
           char oobdata;
           int atmark, s;

           for (;;) {
               atmark = sockatmark(fd);
               if (atmark == -1) {
                   perror("sockatmark");
                   break;
               }

               if (atmark)
                   break;

               s = read(fd, buf, BUF_LEN) <= 0);
               if (s == -1)
                   perror("read");
               if (s <= 0)
                   break;
           }

           if (atmark == 1) {
               if (recv(fd, &oobdata, 1, MSG_OOB) == -1) {
                   perror("recv");
                   ...
               }
           }

VOIR AUSSI

       fcntl(2), recv(2), send(2), tcp(7)

TRADUCTION

       Cette page de manuel a  été  traduite  par  Alain  Portal  <aportal  AT
       univ-montp2   DOT   fr>   en   2006,   et   mise   à   disposition  sur
       http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».