Опрос STDIN и другие Fds - PullRequest
       3

Опрос STDIN и другие Fds

1 голос
/ 11 января 2011

Здравствуйте, я хочу отслеживать FD, которые находятся на подключении libssh apis.но также хочу контролировать STDIN и анализировать команды из STDIN.

Можно ли сделать это с помощью poll в C ++.

Ответы [ 2 ]

2 голосов
/ 11 января 2011

Я не использовал libssh до того, как бюст прочитал список возможностей, который говорит мне, что он имеет полную поддержку опроса. Таким образом, вы должны иметь возможность poll () для мониторинга ваших соединений ssh, а также дескриптора файла STDIN.

например. опросить стандартный ввод для ввода что-то вроде

int timeout = 100; // wait 100ms
struct pollfd fd;
fd.fd = STDIN;
fd.events = POLLIN;
fd.revents = 0;
int ret = poll(&fd, 1, timeout);
if (ret > 0 && (fd.revents & POLLIN != 0))  {
  // got some data
} else {
  // check for error
}

Первый аргумент опроса - это массив "struct pollfd". Я указал только длину 1 (второй аргумент). Но вы можете выделить массив на столько, сколько вам нужно, с помощью других файловых дескрипторов из libssh, включенных в массив, который вы хотите отслеживать.

2 голосов
/ 11 января 2011

Не в стандартном C ++, в котором нет FD или poll().Но в Unix (POSIX) stdin является допустимым FD со значением 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...