Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Программа для демонстрации функции poll
- #include <stdio.h>
- #include <string.h> // memset
- #include <poll.h>
- #include <unistd.h> // STDIN_FILENO
- // В Windows c unistd.h вероятно возникнут проблемы :)
- // STDIN_FILENO там определено где-то еще
- int main( int argc, char* argv[] )
- {
- // Структура с данными, описывающими файловый дескриптор
- struct pollfd pfd;
- // Таймаут в миллисекундах
- int ms_timeout;
- // Результат выполнения poll
- int pr;
- // Введенный символ
- unsigned char ch;
- // Будем ждать ввода пользователя 4 секунды = 4000 миллисекунд
- ms_timeout = 4000;
- // Зачистим от мусора
- memset( &pfd, 0, sizeof(struct pollfd) );
- // Подготовим структуру для наблюдения за статусом дескриптора
- pfd.fd = STDIN_FILENO;
- // Будем отслеживать событие "Появились данные для чтения"
- pfd.events = POLLIN;
- printf( "Введите 'Y' для продолжения работы: " );
- fflush( stdout );
- pr = poll( &pfd, 1, ms_timeout );
- if( pr == 0 )
- {
- printf( "Прошло более %d мс. Выход по таймауту\n",
- ms_timeout );
- }
- else
- {
- if( pr > 0 )
- {
- // Считаем символ из STDIN
- ch = fgetc( stdin );
- if( ch == 'Y' )
- {
- printf( "Продолжение работы!\n" );
- }
- else
- {
- printf( "Неизвестный символ '%c'\n", ch );
- }
- }
- else
- {
- // Произошла ошибка во время выполнения функции
- // poll
- perror( "poll" );
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement