3
使用標準輸入我有以下程序:與選擇(c)中
#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被檢測到,消息「的用戶輸入 - 標準輸入」輸入保持在印刷.. 。爲什麼不打印一次,然後在while循環中檢查哪些描述符已經輸入?
謝謝。
如果我有一個正在運行的程序,並且我在控制檯上鍵入任何文本並按Enter鍵,那麼STDIN不會讀取它嗎? – Jake 2012-04-18 23:06:44
@Jake - 不是。控制檯只是將輸入發送給你的程序,而你的程序沒有讀取它。輸入在緩衝區中,直到您的代碼被讀取。 – 2012-04-18 23:08:40