使用select来检测键盘输入

时间:2012-06-13 18:38:08

标签: c select

我正在编写一个简单的服务器,使用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这样的命令)吗?如果没有,我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以使用STDIN_FILENO(来自unistd.h),或使用fileno(stdin)(来自stdio.h)来获取控制台输入的文件描述符。将其添加到“读取”fdset,select将“做正确的事情”,指示何时有可用的控制台输入。从那里,只需读取它就像任何其他文件描述符一样。