Votre IP: 38.107.179.244 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 27-03-2008 20:23:44

Linux  Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]


SOCKATMARK

 

Index

  1. NOM
  2. SYNOPSIS
  3. DESCRIPTION
  4. VALEUR RENVOYÉE
  5. ERREURS
  6. NOTES
  7. CONFORMITÉ
  8. VERSIONS
  9. BOGUES
  10. EXEMPLE
  11. VOIR AUSSI
  12. TRADUCTION

 

NOMIndex

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

SYNOPSISIndex

#include <sys/socket.h>
int sockatmark(int fd);  

DESCRIPTIONIndex

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ÉEIndex

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.  

ERREURSIndex

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.
 

NOTESIndex

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() SIOCATMARK.  

CONFORMITÉIndex

POSIX.1-2001  

VERSIONSIndex

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

BOGUESIndex

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

EXEMPLEIndex

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 AUSSIIndex

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

TRADUCTIONIndex

Cette page de manuel a été traduite par Alain Portal <aportal AT univ-montp2 DOT fr> en 2006.
La traduction de cette page de manuel est basée sur les traductions disponibles sur http://manpagesfr.free.fr/, mais est gérée par l'équipe francophone de traduction de Debian au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».


Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS