Um arquivo de dispositivo no Linux pode apontar para vários arquivos?

Um arquivo de dispositivo no Linux pode apontar para vários arquivos?

Um shell no Linux (por exemplo: bash) tem todos os seus descritores de arquivo ande stdinapontando para o mesmo arquivo de dispositivo, por exemplo, a seguir estão os descritores de arquivo ande para :stdoutstderrstdinstdoutstderrbash

insira a descrição da imagem aqui

Agora /dev/tty1não é um arquivo "real" que você pode ler e gravar, é um arquivo de dispositivo que aponta para um arquivo ou para um buffer na memória ou para qualquer outra coisa.

Agora minha pergunta é: /dev/tty1aponta para apenas um arquivo ou aponta para dois arquivos?

O que quero dizer é que, quando bashlê de /dev/tty1( stdin) e quando bashescreve para /dev/tty1( stdoutou stderr), ele está lendo e escrevendo para omesmo arquivo, ou /dev/tty1aponta para dois arquivos, um é usado ao ler /dev/tty1e o outro é usado ao gravar em /dev/tty1?

Responder1

Um nó de dispositivo aponta para um únicodispositivo, que no Linux é gerenciado pelo kernel. Quando bashlê from /dev/tty1, ele lê no driver de dispositivo que gerencia o primeiro terminal; quando grava nele, ele grava no mesmo driver de dispositivo.

Responder2

Um arquivo de dispositivo não “aponta para vários arquivos”. Um arquivo de dispositivo nem “aponta” para um único arquivo. Um arquivo de dispositivo aponta para um driver. O driver contém código que lida com operações de leitura e gravação.

Não precisa haver uma relação entre os dados lidos no dispositivo e os dados gravados. Alguns dispositivos possuem um, outros não. Por exemplo, com um disco, os dados lidos em uma determinada posição são os dados que foram gravados anteriormente nessa posição. Por outro lado, com uma porta serial, os dados gravados no dispositivo são enviados na linha serial e os dados lidos do dispositivo são recebidos na linha serial; o que é enviado é independente do que é recebido.

Um terminal é muito parecido com um dispositivo serial. Na verdade, historicamente, os terminais físicos eram geralmente conectados através de linhas seriais. Quando um aplicativo lê um arquivo de terminal, ele recebe dados que foram enviados pelo driver de terminal ou pelo emulador de terminal — o driver/emulador de terminal grava a entrada em seu lado do terminal, o aplicativo lê a entrada em seu lado do terminal. Quando um aplicativo grava em um arquivo de terminal, ele envia dados que são lidos pelo driver de terminal ou pelo emulador de terminal — o aplicativo grava a saída em seu lado do terminal, o driver/emulador de terminal lê a saída em seu lado do terminal .

informação relacionada