使用select检测键盘输入

问题描述 投票:0回答:1

我正在编写一个简单的服务器,使用 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 检测用户的键盘输入(对于退出等命令)吗?如果没有,我该怎么做?

c posix-select
1个回答
2
投票

您可以使用

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

© www.soinside.com 2019 - 2024. All rights reserved.