tcsh cierra los descriptores de archivos

tcsh cierra los descriptores de archivos

Tengo un programa que se inicia con un script tcsh. Me gustaría comunicarme con ese proceso a través de tuberías (nocanalizaciones con nombre) creadas por un proceso padre. Sin embargo, parece que tcsh cierra todas las tuberías abiertas, excepto 0-2cuando se inicia.

Ejemplo (puede ser un poco más largo de lo necesario, el problema es visible en cuanto B''):

Para "claridad", identificaré los mensajes de bash con $y los de tcsh con %. Incremento la letra cuando el proceso es una bifurcación y agrego una 'para marcar una exec (3)llamada.

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

El descriptor de archivo está cerrado, lo que significa que ya no puedo usarlo desde el proceso hijo. ¿Hay alguna forma de decirle a csh que persista (evite cerrar) los descriptores de archivos?

información relacionada