2011-08-10 36 views
0

我有以下要求;Stdin上的問題

1)文件描述符選擇塊相關聯的標準輸入

2)現在我怎麼寫代碼,這樣選擇被解封。代碼應該使stdin文件描述符準備就緒。換句話說,代碼應該使得選擇unblock而不用等待用戶給出輸入

+0

誰會運行此代碼,疏導選擇? – cnicutar

+0

考慮到代碼在一個程序中是連續的。 – sasian

+0

程序應該是類似 – sasian

回答

1

如果我們在談論UNIX系統調用select,並且您正在使用它來等待對於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()立即返回。 (這個 對於輪詢很有用。)如果timeout爲NULL(無超時),select()可以無限期地阻塞 。

涉及的時間結構中定義,看起來像

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