猿问

您如何在Linux中使用C进行非阻塞控制台I / O?

在C / Linux / OS X上如何不阻塞控制台IO?



catspeake
浏览 874回答 3
3回答

慕容森

我想添加一个例子:#include <unistd.h>#include <fcntl.h>#include <stdio.h>int main(int argc, char const *argv[]){&nbsp; &nbsp; char buf[20];&nbsp; &nbsp; fcntl(0, F_SETFL, fcntl(0, F_GETFL) | O_NONBLOCK);&nbsp; &nbsp; sleep(4);&nbsp; &nbsp; int numRead = read(0,buf,4);&nbsp; &nbsp; if(numRead > 0){&nbsp; &nbsp; &nbsp; &nbsp; printf("You said: %s", buf);&nbsp; &nbsp; }}运行该程序时,您有4秒钟的时间向标准输入提供输入。如果未找到输入,它将不会阻塞,只会返回。2个示例执行:Korays-MacBook-Pro:~ koraytugay$ ./a.outfda&nbsp;You said: fdaKorays-MacBook-Pro:~ koraytugay$ ./a.outKorays-MacBook-Pro:~ koraytugay$&nbsp;
随时随地看视频慕课网APP
我要回答