为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

catspeake 2019-10-10 16:48:38
在C / Linux / OS X上如何不阻塞控制台IO?
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超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秒钟的时间向标准输入提供输入。如果未找到输入,它将不会阻塞,只会返回。


2个示例执行:


Korays-MacBook-Pro:~ koraytugay$ ./a.out

fda 

You said: fda

Korays-MacBook-Pro:~ koraytugay$ ./a.out

Korays-MacBook-Pro:~ koraytugay$ 


查看完整回答
反对 回复 2019-10-10
  • 3 回答
  • 0 关注
  • 873 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信