Linux で C 言語を使用して非ブロッキング コンソール I/O を実行するにはどうすればよいでしょうか? 質問する

Linux で C 言語を使用して非ブロッキング コンソール I/O を実行するにはどうすればよいでしょうか? 質問する

Linux/OS X で C 言語を使用して非ブロッキング コンソール IO を実行するにはどうすればよいでしょうか?

ベストアンサー1

例を追加したいと思います:

#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 つのサンプル実行:

$ ./a.out
fda 
You said: fda
$ ./a.out
$ 

おすすめ記事