tcsh schließt Dateideskriptoren

tcsh schließt Dateideskriptoren

Ich habe ein Programm, das mit einem tcsh-Skript gestartet wird. Ich möchte mit diesem Prozess über Pipes kommunizieren (nichtbenannte Pipes), die von einem übergeordneten Prozess erstellt wurden. Es sieht jedoch so aus, als ob tcsh jede offene Pipe schließt, außer 0-2beim Start.

Beispiel (kann etwas länger als nötig sein, das Problem wird sofort sichtbar B''):

Der Übersichtlichkeit halber kennzeichne ich Bash-Eingabeaufforderungen mit $und Tcsh-Eingabeaufforderungen mit %. Ich erhöhe den Buchstaben, wenn der Prozess ein Fork ist, und füge ein hinzu, 'um einen exec (3)Aufruf zu kennzeichnen.

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

Der Dateideskriptor ist geschlossen, was bedeutet, dass ich ihn vom untergeordneten Prozess aus nicht mehr verwenden kann. Gibt es eine Möglichkeit, csh anzuweisen, Dateideskriptoren beizubehalten (das Schließen zu vermeiden)?

verwandte Informationen