回答編集履歴
1
誤字脱字修正
answer
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
> &rfdsに何が入るかがわかりません。
|
2
2
|
> FD_SET(0, &rfds)で、ファイル名をキーボードから入力するのでしょうか?
|
3
3
|
|
4
|
-
`rdfs`の内容は隠蔽されているので、基本、プログラマーが意識する必要はありません。`FD_SET(0, &rfds)`を実行すると、ファイルディスクリプターの`0`が`rdfs`の構造体にフラグ情報として収められ、`select`で監視対象として使えるようになります。
|
4
|
+
`rdfs`の内容は隠蔽されているので、基本、プログラマーが意識する必要はありません。`FD_SET(0, &rfds)`を実行すると、標準入力であるファイルディスクリプターの`0`番が`rdfs`の構造体にフラグ情報として収められ、`select`で監視対象として使えるようになります。
|
5
5
|
|
6
|
-
その後、`select`実行中にキーボードから入力(実際はENTERキーを押し、`\n`が入力)されるまで停まっています。入力が
|
6
|
+
その後、`select`実行中にキーボードから入力(実際はENTERキーを押し、`\n`が入力)されるまで停まっています。入力が済めば、ファイルディスクリプターの`0`番に変化があったことで`select`から抜けてきます。`FD_ISSET`で本当に正しく`0`番に変化があったことを検査してから`read`すれば、入力された値を読み出すことができる、というわけです。
|
7
|
-
値を読み出すことができる、というわけです。
|
8
7
|
|
9
8
|
質問者さんのコードを少し修正して何が起こるのか分かるようにしてみましたので、読んでみてください
|
10
9
|
```C
|