关于Stdin的问题

时间:2011-08-10 08:37:58

标签: linux sockets

我有以下要求;

1)选择与stdin相关的文件描述符上的块

2)现在我如何编写一个代码,以便select取消阻止。代码应该使stdin文件描述符准备就绪。换句话说,代码应该使select unblock而不等待用户提供输入

1 个答案:

答案 0 :(得分:1)

如果我们正在谈论select UNIX系统调用,并且您正在使用它来等待stdin上的数据,则可以使用timeout参数来指示您最多要阻止的选择超时秒。

来自select man on Linux

#include <sys/select.h>
int select(int nfds, fd_set *readfds, fd_set *writefds,
           fd_set *exceptfds, struct timeval *timeout);
  

超时是select()之前经过的时间量的上限   回报。它可能为零,导致select()立即返回。 (这个   对于轮询非常有用。)如果timeout为NULL(无超时),则select()可以   无限期地阻止。

     

所涉及的时间结构定义如下

struct timeval {
  long    tv_sec;         /* seconds */
  long    tv_usec;        /* microseconds */
};