0

我正在编写一个简单的服务器,使用 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 检测它正在监视的套接字中的变化并“报告”它。我可以使用 select 检测用户的键盘输入(对于退出等命令)吗?如果没有,我该怎么做?

4

1 回答 1

2

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

于 2012-06-13T18:46:05.773 回答