stdin, stdout y stderr se comparten entre?

Estoy tratando de entender el comportamiento de las tres corrientes:stdout, stdin ystderr. No pude obtener la respuesta de ningún libro de texto, así que vine aquí.

Sé que estos tres se almacenan en la tabla de descriptores de archivo con los descriptores de archivo 0 (stdin), 1 (stdout) y 2 (stderr). También soy consciente de que estos no son simplemente descriptores de archivos, sino secuencias de E / S que se pueden redirigir. Ok, ¿qué tal compartir?

Considere los tres casos:

Cuando se llama un fork () : El proceso secundario y el proceso primario comparten descriptores de archivo, pero ¿tienen los mismos stdin, stdout y stderr?Cuando se crea un hilo : ¿Los subprocesos comparten descriptores de archivo, pero las secuencias de E / S?Cuando se llama a execl () : En este caso, la imagen del proceso actual se sobrescribe con la nueva imagen del proceso. Si lo hagoexecl("./a.out", "a.out", NULL); , entonces, ¿este nuevo ejecutable obtendrá una copia nueva de stdin, stderr y stdout?

Todas las respuestas sabias son bienvenidas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta