Não.

Não.

Da interface de programação Linux

Em um shell interativo, esses três descritores de arquivo 0, 1 e 2 normalmente se referem ao terminal sob o qual o shell está sendo executado.

  1. "O terminal sob o qual o shell está sendo executado" significa o terminal de controle da sessão à qual o shell interativo pertence?

    Se sim, e se a sessão do shell não tiver um terminal de controle?

  2. Quando o shell é criado a partir de seu processo pai, o shell criará automaticamente uma conexão entre os descritores de arquivo 0, 1 e 2 e o terminal, em cada um dos seguintes casos (herança do processo pai do shell):

    • se "o terminal sob o qual o shell está sendo executado" ou o terminal de controle já foi aberto em um descritor de arquivo que não é 0, 1 e 2?

    • se os descritores de arquivo 0, 1 e 2 já foram conectados a um arquivo que não é "o terminal sob o qual o shell está sendo executado" ou o terminal de controle?

  3. E se o shell da cotação não for interativo?

Obrigado.

A propósito, apenas suponha que "shell" seja POSIX ou bash.

RelacionadoComo podemos desconectar um descritor de arquivo de qualquer arquivo?

Responder1

Não.

Isso é feito pelas várias implementações de getty, poropen-controlling-tty, pela parte bifurcada do lado pty-slave de um servidor SSH, pela parte bifurcada do lado pty-slave de um emulador de terminal GUI ou algo assim.

E observe que o texto citadonão tem implicaçãoque o shell faz isso. Você criou um monte de perguntas baseadas em uma premissa falsa tirada do nada.

E você sabia que gettyisso acontecia, porque escreveu que acontecia em "Quando é iniciada a sessão do processo liderada por login?", escrito ao mesmo tempo que esta pergunta.

Leitura adicional

informação relacionada