stdin, stdout e stderr são compartilhados entre?

Estou tentando entender o comportamento dos três fluxos -stdout, stdin estderr. Não consegui a resposta de nenhum livro, então vim aqui.

Eu sei que esses três são armazenados na tabela de descritores de arquivos com descritores de arquivos 0 (stdin), 1 (stdout) e 2 (stderr). Também estou ciente de que esses não são apenas descritores de arquivos, mas fluxos de E / S que podem ser redirecionados. Ok, e quanto a compartilhar?

Considere os três casos:

Quando um fork () é chamado : O processo filho e o processo pai compartilham descritores de arquivo, mas eles têm o mesmo stdin, stdout e stderr?Quando um segmento é criado : Threads compartilham descritores de arquivo, mas fluxos de E / S?Quando execl () é chamado : Nesse caso, a imagem do processo atual é substituída pela nova imagem do processo. Se eu fizerexecl("./a.out", "a.out", NULL); , então este novo executável receberá uma cópia nova de stdin, stderr e stdout?

Todas as respostas sábias são bem-vindas.

questionAnswers(2)

yourAnswerToTheQuestion