我正在编写一个简单的服务器,使用select来监控多个病人。
这是我的代码:
while (1) { /* Main server loop - forever */
build_select_list();
timeout.tv_sec = 1;
timeout.tv_usec = 0;
readsocks = select(maxSock+1, &socks, (fd_set *) 0, (fd_set *) 0, &timeout);
if (readsocks < 0) {
perror("select");
exit(EXIT_FAILURE);
}
if (readsocks == 0) {
printf(".");
fflush(stdout);
} else
read_socks();
}
我知道在它正在监视的套接字中选择检测器更改并“报告”它。我可以使用select来检测用户的键盘输入(对于exit这样的命令)吗?如果没有,我该怎么做?
答案 0 :(得分:2)
您可以使用STDIN_FILENO
(来自unistd.h),或使用fileno(stdin)
(来自stdio.h)来获取控制台输入的文件描述符。将其添加到“读取”fdset,select
将“做正确的事情”,指示何时有可用的控制台输入。从那里,只需读取它就像任何其他文件描述符一样。