您好我想监视来自libssh connection apis的FD。但也希望监视STDIN,并解析来自STDIN的命令。
我可以在C ++中使用poll进行此操作。
答案 0 :(得分:2)
不在标准C ++中,没有FD或poll()
。但是在unix(POSIX)上,stdin
是值为0的有效FD。
答案 1 :(得分:2)
我没有在使用libssh之前读取功能列表告诉我它有完整的民意调查支持。 因此,您应该能够poll()直接监视您的ssh连接以及STDIN文件描述符。
e.g。轮询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
}
poll的第一个参数是一个“struct pollfd”数组。我只指定了长度为1(第二个参数)。但是,您可以根据需要使用libssh中包含的其他文件描述符为您要监视的数组分配一个数组。