Re: リダイレクトでのdup関数の必要性って?
久野です。
matsui888@hotmail.comさん:
> dup(fd); //既生成のディスクリプタを空いている1番に複製?
dupは「今あいている一番若い番号に複製する」という仕様に
なっています。なので、たとえば
0:X 1:Y 2:Z
という対応づけになっているのを
0:Y 1:Z 2:X
のように「番号を割り当て直したい」としますよね。それには
→ dup(0) → 0:X 1:Y 2:Z 3:X
→ close(0) → 0:- 1:Y 2:Z 3:X
→ dup(1) → 0:Y 1:Y 2:Z 3:X
→ close(1) → 0:Y 1:- 2:Z 3:X
→ dup(2) → 0:Y 1:Z 2:Z 3:X
→ close(2) → 0:Y 1:Z 2:- 3:X
→ dup(3) → 0:Y 1:Z 2:X 3:X
→ close(3) → 0:Y 1:Z 2:X
なんていう風にしてできるわけです。なお、Unixでは0が標準入力、1が
標準出力、2が標準エラー出力なので、何かを特定番号に割り当てたい
というのは結構あるわけです。
うまくできているというか、パズルみたいというか。 久野
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735