Non, il n'y en a pas, du moins, pas vraiment fiable. Quand un processus est forké, il a (au moins) ses trois premiers descripteurs de fichiers arrangés par son parent avant fork(), donc il les hérite. Après la fourche, sans code de noyau, il n'y a rien que n'importe quel processus autre que ce processus peut leur faire.
OK, eh bien, presque rien. Les appels système qui supportent les débogueurs (par exemple, gdb) peuvent être utilisés pour piquer la mémoire et forcer les appels de fonction dans un processus. Dans un tube à essai, ceci peut être utilisé pour fermer et rouvrir ces flux. Dans la vraie vie, il est impossible de dire si le processus sera dans un état vraiment malheureux quand vous l'attrapez dans le débogueur, et répondra par l'auto-immolation si vous essayez cela.
L'utilisation du débogueur pour forcer le code à s'exécuter dans le processus cible n'est pas une procédure «bash». – bmargulies
@bmargulies: '(printf 'p dup2 (open ("/dev/null ", 1), 1) \ np dup2 (1,2) \ ndetach \ n'; sleep 1) | gdb -p $ mon_pid' passe assez bien comme un shellscript. Certes, 'gdb' n'est pas POSIX, mais alors, pas beaucoup de bash-isms :) – Jander