sockatmark   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (3)
Updated: 26 juillet 2007
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
sockatmark - Déterminer si la socket a atteint la marque de données hors-bande  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <sys/socket.h>

int sockatmark(int fd);

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

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




DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
sockatmark() a été ajoutée à la glibc dans la version 2.2.4.  



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
POSIX.1-2001  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Avant la glibc 2.4, sockatmark() ne fonctionnait pas.  



EXEMPLE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
fcntl(2), recv(2), send(2), tcp(7)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 4 août 2006 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 3 sockatmark ». 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
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
CONFORMITÉ
NOTES
BOGUES
EXEMPLE
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
EBADFERREURS
EINVALERREURS



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:53:18, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional