A saída stdout de um processo de segundo plano será tomada como a entrada stdin do processo de primeiro plano?

0

Quando um processo em segundo plano é enviado para stdout para aparecer no terminal, a saída será tomada como entrada stdin para o processo em primeiro plano? Observe que o processo de segundo plano e de primeiro plano não estão relacionados por canal.

Eu tenho essa pergunta porque quando um processo em primeiro plano aguarda por entrada stdin, eu posso digitar no terminal para alimentá-lo. A saída stdout de um processo de segundo plano parece fazer a mesma coisa, ou seja, o processo de segundo plano "types" no terminal, enquanto o processo de primeiro plano está aguardando entrada de stdin . Então, por que o processo em primeiro plano não toma a saída padrão do processo em segundo plano como entrada stdin?

Na minha experiência, parece não. Se estou correto, por que não?

    
por Tim 11.04.2016 / 20:51

2 respostas

2

O terminal é conceitualmente separado do processo stdin e stdout . Isso pode ser confuso, já que falamos de "terminal" tanto para a entrada do teclado quanto para a saída da tela.

No entanto, um processo pode ler a entrada do teclado sem ecoá-lo na tela. Por exemplo, quando você faz login, sua senha é lida na sua entrada digitada, mas não aparece na tela.

E, claro, um processo pode imprimir a saída na tela sem você digitar isso no teclado.

É possível (por exemplo, usar tee ) para gravar um fluxo de saída na tela e passá-lo para outro processo, mas isso não os torna iguais.

Em poucas palavras, imprimir algo na tela não é o mesmo que digitar no teclado , embora usemos a palavra "terminal" para descrever os dois.

    
por 11.04.2016 / 22:27
0

Não, porque stdin e stdout são canais separados. A menos que você explicitamente canalize, não há conexão. Você não espera que a saída de suas instruções de impressão seja a entrada para uma instrução de entrada subseqüente, não é?

    
por 11.04.2016 / 21:14