Fw: [問題] C的select問題
※ [本文轉錄自 Wanted 看板 #1FzehSmd ]
作者: OpenSolaris (SunOS 5.11) 看板: Wanted
標題: [問題] C的select問題
時間: Fri Jul 6 14:51:06 2012
最近剛學C的select,但是現在遇到一個問題,
當某個設備讀到東西時,會觸發一段function。
這部分實做是ok,但是我想寫一個迴圈,
讀到東西後,清空重讀。
卻怎麼都寫不出來:
這是我試驗的code:
============================================
#include <stdio.h>
#include <sys/types.h>
#include <sys/select.h>
#define STDIN 0
main()
{
int n=1;
while (2) {
struct timeval tv;
fd_set readfds;
tv.tv_sec = 1;
tv.tv_usec=0;
FD_ZERO(&readfds);
FD_SET(STDIN,&readfds);
select(STDIN+1,&readfds, NULL, NULL,&tv);
if (FD_ISSET(STDIN,&readfds)) {
printf("A key was pressed!\n");
} else {
printf("Timed out.\n");
}
printf("%d\n",n);
n=n+1;
}
如果沒東西,它會每秒顯示timeout。但是只要按一下<enter>
整個迴圈就迅速跑起來,猛顯示A key was pressed!
我想要的是顯示一次後就被清空等待輸入。
不曉得要如何處理,希望各位大師能教我,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.201.142.21
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: OpenSolaris (122.201.142.21), 時間: 07/06/2012 15:00:19
→
07/06 15:32, , 1F
07/06 15:32, 1F
→
07/06 15:35, , 2F
07/06 15:35, 2F
推
07/06 16:31, , 3F
07/06 16:31, 3F
→
07/06 16:32, , 4F
07/06 16:32, 4F
→
07/06 16:34, , 5F
07/06 16:34, 5F
→
07/06 17:04, , 6F
07/06 17:04, 6F
→
07/06 20:43, , 7F
07/06 20:43, 7F
→
07/06 22:58, , 8F
07/06 22:58, 8F
→
07/06 23:00, , 9F
07/06 23:00, 9F
→
07/07 00:59, , 10F
07/07 00:59, 10F