回答編集履歴

3

1はstdoutだよ

2016/06/01 09:32

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  |0| stdin | r |
18
18
 
19
- |1| stdin | w |
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| stdin | w |
41
+ |1| stdout | w |
42
42
 
43
43
  |2| stderr | w |
44
44
 

2

標準入力について勘違いしていたのを修正

2016/06/01 09:32

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -6,23 +6,25 @@
6
6
 
7
7
 
8
8
 
9
- ファイルには読み(in)と書き(out)があるため、一つのファイルディスクリプタの番号に対してinとoutぞれ割り当てることができます。bashでは通常起動した直後は次のようになっています。
9
+ ファイルには読み(r)と書き(w)があるため、ファイルディスクリプタの番号に対してrかwかrw設定さて、何かしらのデバイス(ファイル)に割り当てることができます。bashでは通常起動した直後は次のようになっています。
10
10
 
11
11
 
12
12
 
13
- | 番号 | in | out |
13
+ | 番号 | デバイス | モード |
14
14
 
15
15
  |:---:|:---:|:---:|
16
16
 
17
- |1| stdin | stdout |
17
+ |0| stdin | r |
18
18
 
19
- |2| (無し) | stderr |
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
- | 番号 | in | out |
35
+ | 番号 | デバイス | モード |
34
36
 
35
37
  |:---:|:---:|:---:|
36
38
 
37
- |1| stdin | stdout |
39
+ |0| stdin | r |
38
40
 
39
- |2| (無し) | stderr |
41
+ |1| stdin | w |
40
42
 
43
+ |2| stderr | w |
44
+
41
- |3| /dev/tcp/相手先ホスト名/ポート番号 | /dev/tcp/相手先ホスト名/ポート番号|
45
+ |3| /dev/tcp/相手先ホスト名/ポート番号 | rw |
42
46
 
43
47
 
44
48
 

1

誤字の修正

2016/06/01 09:30

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- `3`は**ファイルディスクリプタ**の番号です。UNIX/Linuxではあらゆるプログラムにおいてファイル(標準入出力やネットワーク通信含む)の読み書きをするときはファイルディスクリプタというただの番号でやり取りしています。`2>&1`とかの`2`や`1`も同じくファイルディスクリプタの番号です。
5
+ `3`は**ファイルディスクリプタ**の番号です。UNIX/Linuxではあらゆるプログラムにおいてファイル(標準入出力やネットワーク通信含む)の読み書きをするときはファイルディスクリプタというただの番号でやり取りしています。`2>&1`とかの`2`や`1`も同じくファイルディスクリプタの番号です。
6
6
 
7
7
 
8
8