Gostaria de saber quais são os stdin e stdout padrão de um processo filho (se houver esses padrões). São stdin e stdout de um processo filho o mesmo que o processo pai? Isso é algo herdado do pai ou algo definido pelo pai? Ou o stdin e stdout do processo filho são plugados em stdin e stdout do processo pai?
No meu entendimento, pai e filho não são canalizados, mas são os primeiros clones, então eu acho que stdin e stdout da criança são exatamente os mesmos que os pais, mas não tenho certeza.
Por exemplo, em um terminal executando bash
como um shell de login, se eu digitar sh
ele criará um processo shell filho, que terá como stdin o teclado e stdout a tela do terminal, assim como o seu pai. Eu quero entender como o stdin e o stdout da criança foram definidos e o que eles são.
Eu quero saber se, por exemplo, neste caso, se o stdin e stdout do filho são como o pai, é porque o stdin do pai é enviado para o stdin filho, e o pai apenas "redireciona" a entrada para o filho ou se criança recebe sua entrada diretamente do teclado.
Neste mesmo caso, se pai e filho tiverem o mesmo stdin, isso significa que o pai processa os mesmos comandos que são digitados para o filho? Como é que vemos apenas o stdin / out do filho no terminal e não o dos pais?