tcshはファイル記述子を閉じます

tcshはファイル記述子を閉じます

tcsh スクリプトで起動されるプログラムがあります。パイプを介してそのプロセスと通信したいです (ない親プロセスによって作成されたパイプ (名前付きパイプ) を tcsh が閉じるのを防ぎます。ただし、0-2起動時を除いて、tcsh は開いているパイプをすべて閉じるようです。

例 (必要以上に長いかもしれませんが、問題はすぐに明らかになりますB''):

$わかりやすくするために、bash プロンプトを で、tcsh プロンプトを で識別します%。プロセスがフォークの場合は文字を増やし、呼び出しを'マークするためにを追加しますexec (3)

A$ exec 42>42_output.txt # open fd 42
A$ ls /proc/$$/fd
0  1  2  255  3  42
A$ bash # launch bash as a child
B$ echo test >&42 #writes "test" to the file
B$ exec bash
B'$ echo test2 >&42 # also writes to the file
B'$ ls /proc/$$/fd
0  1  2  255  3  42
B'$ tcsh
B''% ls /proc/$$/fd
0  1  15  16  17  18  19  2
B''% bash
C$ ls /proc/$$/fd
0  1  2  255  3
C$ exit
B''% exec bash
B'''$ ls /proc/$$/fd
0  1  2  255  3
A$ exit
A$ ls /proc/$$/fd
0  1  2  255  3  42
A$ exec tcsh
A$ ls /proc/$$/fd
0  1  15  16  17  18  19  2  4

ファイル記述子は閉じられているため、子プロセスからは使用できなくなります。csh にファイル記述子を永続化 (閉じないように) するように指示する方法はありますか?

関連情報