在C / Linux / OS X上如何不阻塞控制臺IO?
3 回答

慕容森
TA貢獻1853條經(jīng)驗 獲得超18個贊
我想添加一個例子:
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main(int argc, char const *argv[])
{
char buf[20];
fcntl(0, F_SETFL, fcntl(0, F_GETFL) | O_NONBLOCK);
sleep(4);
int numRead = read(0,buf,4);
if(numRead > 0){
printf("You said: %s", buf);
}
}
運行該程序時,您有4秒鐘的時間向標(biāo)準(zhǔn)輸入提供輸入。如果未找到輸入,它將不會阻塞,只會返回。
2個示例執(zhí)行:
Korays-MacBook-Pro:~ koraytugay$ ./a.out
fda
You said: fda
Korays-MacBook-Pro:~ koraytugay$ ./a.out
Korays-MacBook-Pro:~ koraytugay$
添加回答
舉報
0/150
提交
取消