tcsh fecha descritores de arquivo

tcsh fecha descritores de arquivo

Eu tenho um programa que está sendo iniciado com um script tcsh. Eu gostaria de me comunicar com esse processo através de pipes (nãopipes nomeados) criados por um processo pai. No entanto, parece que o tcsh fecha todos os tubos abertos, exceto 0-2durante a inicialização.

Exemplo (pode ser um pouco mais longo do que o necessário, o problema é visível assim que B''):

Para maior clareza, identificarei os prompts do bash com $e os tcsh com %. Incremento a letra quando o processo é uma bifurcação e adiciono a 'para marcar uma exec (3)chamada.

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

O descritor de arquivo está fechado, o que significa que não posso mais usá-lo no processo filho. Existe alguma maneira de dizer ao csh para persistir (evitar o fechamento) dos descritores de arquivo?

informação relacionada