当前位置: 首页 > 面试题库 >

在C中将stdin与select()一起使用

韦叶秋
2023-03-14
问题内容

我有以下程序:

 #include <stdio.h>
 #define STDIN 0

 int main()
 {

    fd_set fds;
    int maxfd;
    // sd is a UDP socket

    maxfd = (sd > STDIN)?sd:STDIN;

    while(1){

        FD_ZERO(&fds);
        FD_SET(sd, &fds); 
        FD_SET(STDIN, &fds);

        select(maxfd+1, &fds, NULL, NULL, NULL);

        if (FD_ISSET(STDIN, &fds)){
              printf("\nUser input - stdin");
        }
        if (FD_ISSET(sd, &fds)){
              // socket code
        }
     }
 }

我面临的问题是,一旦在STDIN上检测到输入,消息“ User input-
stdin”就继续打印…为什么在循环检查哪一个描述符已输入的同时,它一次又不打印一次?

谢谢。


问题答案:

select功能仅在有可用输入时告诉您。如果您实际上并没有消耗它,那么select将继续直接下降。



 类似资料:
  • 问题内容: 我正在尝试运行SQL查询以获取四个随机项。由于表中product_filter有多个toupleproduct我必须使用DISTINCTin SELECT,所以出现此错误: 对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中 但是,如果我RANDOM()输入了SELECT它,将会避免DISTINCT结果。 有人知道如何DISTINCT与RANDOM()功能一

  • 问题内容: 我有一台使用HTTPS且使用Firefox的Grizzly制造的REST服务器。这是代码: 现在,我尝试用Java达到它: 得到: 从我在网上找到的示例来看,似乎需要设置一个Truststore,然后再设置某种TrustManager。对于我这个简单的小项目,这似乎需要大量代码和设置工作。有没有更简单的方法可以说..我信任此证书并指向.cert文件? 问题答案: 当您说“是否有一种更简

  • 问题内容: 以下 如何在React中与axios一起使用async / await 我试图在React.js应用程序中使用Async / Await向我的服务器发出一个简单的get请求。服务器加载一个简单的JSON ,看起来像这样 JSON格式 我可以使用简单的jquery ajax get方法将数据获取到我的React App。但是,我想利用axios库和Async / Await来遵循ES7标

  • 问题内容: 我有这样的mysql查询: 我在查询中有很多where子句。如何改进此查询以获取完整的行数?没有LIMIT我不想再使用一个请求。 问题答案: 您正在寻找的是这个

  • 问题内容: 在SQL Server中,这会将来自Customers表的100条记录插入到tmpFerdeen中: 是否可以跨UNION ALL SELECT进行SELECT INTO:- 不太确定在哪里添加INTO子句。 问题答案: 这在SQL Server中有效:

  • 问题内容: 如何将Go程序与C库接口? 我一直在浏览Go的源代码,但我仍然没有弄清楚。如果有人已经这样做了,请分享一下吗? 更新: 感谢@fserb,我从Go来源发布了一些文档: Cgo支持创建调用C代码的Go包。 用法:cgo [编译器选项] file.go 调用gcc编译软件包的C部分时,编译器选项将通过未解释的传递。 输入file.go是一个语法上有效的Go源文件,该文件导入伪包“ C”,然