The OpenNET Project / Index page

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

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

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

poll (2)
  • poll (2) ( Solaris man: Системные вызовы )
  • poll (2) ( FreeBSD man: Системные вызовы )
  • >> poll (2) ( Русские man: Системные вызовы )
  • poll (2) ( Linux man: Системные вызовы )
  • poll (3) ( POSIX man: Библиотечные вызовы )
  • poll (7) ( Solaris man: Макропакеты и соглашения )
  • Ключ poll обнаружен в базе ключевых слов.
  •  

    НАЗВАНИЕ

    poll - ожидает некоторое событие в файловом описателе  

    СИНТАКСИС

    #include <sys/poll.h>

    int poll(struct pollfd *ufds, unsigned int nfds, int timeout);  

    ОПИСАНИЕ

    poll является вариантом select. Задается массив из nfds структур типа
            struct pollfd {
                    int fd;           /* описатель файла */
                    short events;     /* запрошенные события */
                    short revents;    /* возвращенные события */
            };
    
    и значения timeout в миллисекундах. Отрицательное значение указывает на бесконечный таймер. Поле fd содержит описатель открытого файла. Поле events это входной параметр, указывающий на битовую маску событий, важных для приложения. Поле revents это исходящий параметр, в который ядро помещает информацию о произошедших событиях, запрошенных или типа POLLERR, POLLHUP или POLLNVAL. (Эти три битовых флага не будут иметь смысла при использовании в поле events, поэтому будут установлены в поле revents, если соответствующее условие истинно). Если ни одно из запрошенных событий не случилось или не произошла ни одна из ошибок, то ядро ждет их появления до истечения срока таймера. Вот возможные биты, описанные в <sys/poll.h>:
        #define POLLIN      0x0001    /* Можно считывать данные */
        #define POLLPRI     0x0002    /* Есть срочные данные */
        #define POLLOUT     0x0004    /* Запись не будет блокирована */
        #define POLLERR     0x0008    /* Произошла ошибка */
        #define POLLHUP     0x0010    /* "Положили трубку" */
        #define POLLNVAL    0x0020    /* Неверный запрос: fd не открыт */
    

    При компилировании исходников XPG4.2 также имеется:

    #ifdef _XOPEN_SOURCE                    
        #define POLLRDNORM  0x0040    /* Данные можно считывать */ 
        #define POLLRDBAND  0x0080    /* Можно считывать приоритетные данные */ 
        #define POLLWRNORM  0x0100    /* Теперь запись не будет блокироваться */ 
        #define POLLWRBAND  0x0200    /* Можно записывать приоритетные данные */ 
    #endif                                  
    
    Наконец, Linux знает об:
    #ifdef _GNU_SOURCE 
        #define POLLMSG     0x0400 
    #endif 
    

     

    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

    При успешном завершении вызова возвращается положительное значение, равное количеству структур с ненулевыми полями revents (другими словами, описатели с обнаруженными событиями или ошибками). Нулевое значение указывает на то, что время ожидания истекло, и ни один из файловых описателей не был выбран. При ошибке возвращается -1, а переменной errno присваивается номер ошибки.  

    НАЙДЕННЫЕ ОШИБКИ

    EBADF
    В одном из наборов был задан некорректный описатель файла.
    ENOMEM
    Не хватило памяти для создания таблицы файловых описателей.
    EFAULT
    Массив, переданный в качестве аргумента, не находится в адресном пространстве вызывающей программы.
    EINTR
    До появления запрошенного события был послан соответствующий сигнал.
     

    СООТВЕТСТВИЕ СТАНДАРТАМ

    XPG4-UNIX.  

    ДОСТУПНОСТЬ

    Системный вызов poll() появился в Linux 2.1.23. Библиотечный вызов poll() появился в libc 5.4.28 (использует эмуляцию с помощью select(2), если ядро не посылает системный вызов poll(2)).  

    СМ. ТАКЖЕ

    select(2), select_tut(2)


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    НАЙДЕННЫЕ ОШИБКИ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    ДОСТУПНОСТЬ
    СМ. ТАКЖЕ


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




    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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