Loading

NOM

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

SYNOPSIS

       #include <sys/socket.h>

       int sockatmark(int sockfd);

   Exigences de  macros  de  test  de  fonctionnalités  pour  la  glibc  (voir
   feature_test_macros(7)) :

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

       sockatmark()  renvoie  une  valeur  indiquant  si  oui ou non la socket
       référencée par le descripteur de fichier sockfd 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  sockfd n’est pas un descripteur de fichier valable.

       EINVAL sockfd   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(sockfd);
               if (atmark == -1) {
                   perror("sockatmark");
                   break;
               }

               if (atmark)
                   break;

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

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

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

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> ».