回答編集履歴
3
1はstdoutだよ
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
|0| stdin | r |
|
18
18
|
|
19
|
-
|1| std
|
19
|
+
|1| stdout | w |
|
20
20
|
|
21
21
|
|2| stderr | w |
|
22
22
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
|0| stdin | r |
|
40
40
|
|
41
|
-
|1| std
|
41
|
+
|1| stdout | w |
|
42
42
|
|
43
43
|
|2| stderr | w |
|
44
44
|
|
2
標準入力について勘違いしていたのを修正
test
CHANGED
@@ -6,23 +6,25 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
ファイルには読み(
|
9
|
+
ファイルには読み(r)と書き(w)があるため、各ファイルディスクリプタの番号に対してrかwかrwが設定されて、何かしらのデバイス(ファイル)に割り当てることができます。bashでは通常起動した直後は次のようになっています。
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
| 番号 |
|
13
|
+
| 番号 | デバイス | モード |
|
14
14
|
|
15
15
|
|:---:|:---:|:---:|
|
16
16
|
|
17
|
-
|
|
17
|
+
|0| stdin | r |
|
18
18
|
|
19
|
-
|
|
19
|
+
|1| stdin | w |
|
20
20
|
|
21
|
+
|2| stderr | w |
|
22
|
+
|
21
|
-
|3| (無し) |
|
23
|
+
|3| (無し) | - |
|
22
24
|
|
23
25
|
|
24
26
|
|
25
|
-
最初は`1`と`2`だけで、`3`以降は割り当てがありません。なお、`3`だけでなくそれよりも大きい数字が使えます(どこまで使えるかはulimitの制限等による)。そこで、`exec 3<> /dev/tcp/相手先ホスト名/ポート番号`としたときにどうなるかです。
|
27
|
+
最初は`0`と`1`と`2`だけで、`3`以降は割り当てがありません。なお、`3`だけでなくそれよりも大きい数字が使えます(どこまで使えるかはulimitの制限等による)。そこで、`exec 3<> /dev/tcp/相手先ホスト名/ポート番号`としたときにどうなるかです。
|
26
28
|
|
27
29
|
|
28
30
|
|
@@ -30,15 +32,17 @@
|
|
30
32
|
|
31
33
|
|
32
34
|
|
33
|
-
| 番号 |
|
35
|
+
| 番号 | デバイス | モード |
|
34
36
|
|
35
37
|
|:---:|:---:|:---:|
|
36
38
|
|
37
|
-
|
|
39
|
+
|0| stdin | r |
|
38
40
|
|
39
|
-
|
|
41
|
+
|1| stdin | w |
|
40
42
|
|
43
|
+
|2| stderr | w |
|
44
|
+
|
41
|
-
|3| /dev/tcp/相手先ホスト名/ポート番号 |
|
45
|
+
|3| /dev/tcp/相手先ホスト名/ポート番号 | rw |
|
42
46
|
|
43
47
|
|
44
48
|
|
1
誤字の修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
`3`は**ファイルディスクリプタ**の番号です。UNIX/Linuxではあらゆるプログラムにおいてファイル(標準入出力やネットワーク通信含む)の読み書きをするときはファイルディスクリプタというただの番号でやり取りして
|
5
|
+
`3`は**ファイルディスクリプタ**の番号です。UNIX/Linuxではあらゆるプログラムにおいてファイル(標準入出力やネットワーク通信含む)の読み書きをするときはファイルディスクリプタというただの番号でやり取りしています。`2>&1`とかの`2`や`1`も同じくファイルディスクリプタの番号です。
|
6
6
|
|
7
7
|
|
8
8
|
|