The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

sockatmark (3)
  • sockatmark (3) ( Solaris man: Библиотечные вызовы )
  • sockatmark (3) ( FreeBSD man: Библиотечные вызовы )
  • >> sockatmark (3) ( Linux man: Библиотечные вызовы )
  • sockatmark (3) ( POSIX man: Библиотечные вызовы )
  •  

    NAME

    sockatmark - determine whether socket is at out-of-band mark
     
    

    SYNOPSIS

    #include <sys/socket.h>

    int sockatmark(int fd);

    Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

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

    DESCRIPTION

    sockatmark() returns a value indicating whether or not the socket referred to by the file descriptor fd is at the out-of-band mark. If the socket is at the mark, then 1 is returned; if the socket is not at the mark, 0 is returned. This function does not remove the out-of-band mark.  

    RETURN VALUE

    A successful call to sockatmark() returns 1 if the socket is at the out-of-band mark, or 0 if it is not. On error, -1 is returned and errno is set to indicate the error.  

    ERRORS

    EBADF
    fd is not a valid file descriptor.
    EINVAL
    fd is not a file descriptor to which sockatmark() can be applied.
     

    VERSIONS

    sockatmark() was added to glibc in version 2.2.4.  

    CONFORMING TO

    POSIX.1-2001.  

    NOTES

    If sockatmark() returns 1, then the out-of-band data can be read using the MSG_OOB flag of recv(2).

    Out-of-band data is only supported on some stream socket protocols.

    sockatmark() can safely be called from a handler for the SIGURG signal.

    sockatmark() is implemented using the SIOCATMARK ioctl(2) operation.  

    BUGS

    Prior to glibc 2.4, sockatmark() did not work.  

    EXAMPLE

    The following code can be used after receipt of a SIGURG signal to read (and discard) all data up to the mark, and then read the byte of data at the mark:
    
        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");
                ...
            }
        }
    
     

    SEE ALSO

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

    COLOPHON

    This page is part of release 3.14 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    RETURN VALUE
    ERRORS
    VERSIONS
    CONFORMING TO
    NOTES
    BUGS
    EXAMPLE
    SEE ALSO
    COLOPHON


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру