No, al menos, no es confiable.
Cuando un proceso se bifurca, tiene (al menos) sus primeros tres descriptores de archivos organizados por su padre antes de la bifurcación(), por lo que los hereda.
Después de la horquilla, sin código de kernel, no hay nada que ningún otro proceso aparte de ese proceso pueda hacerles.
Bien, bueno, casi nada. Las llamadas al sistema que los depuradores de soporte (por ejemplo, gdb) pueden usarse para perforar memoria y forzar llamadas a funciones en un proceso. En un tubo de ensayo, esto se puede usar para cerrar y volver a abrir estos flujos. En la vida real, no se sabe si el proceso será desafortunado cuando lo atrapes en el depurador y responderá por autoinmolación si lo intentas.
Usar el depurador para obligar al código a ejecutarse en el proceso objetivo no es un procedimiento 'bash'. – bmargulies
@bmargulies: '(printf 'p dup2 (abierto ("/dev/null ", 1), 1) \ np dup2 (1,2) \ ndetach \ n'; sleep 1) | gdb -p $ my_pid' lo suficientemente bien como un shellscript. De acuerdo, 'gdb' no es POSIX, pero tampoco hay muchos bash-ismos :) – Jander