Caso de uso de fornecimento de API semelhante a arquivo para terminal/console

Caso de uso de fornecimento de API semelhante a arquivo para terminal/console

Foi explicado emeste tópico Stack Overflowque cada terminal lógico possui um "pseudoterminal" e que escreve para um:

$ cat some-file.txt > /dev/ttys002

fará com que os dados apareçam nessa janela do terminal. Qual é o motivo para fornecer uma API semelhante a um arquivo para janelas de terminal? Existe algum caso de uso em que isso seja útil?

Até aquicopiado literalmente.

Não se limitando a pseudoterminais, está disponível para/dev/tty*também.

Responder1

A maioria dos dispositivos de hardware oferece uma API semelhante a um arquivo. Isso é feito porque simplifica tanto o design do sistema operacional quanto o design dos aplicativos. O sistema operacional só precisa ter uma API de arquivo e não uma API de terminal separada e uma API de disco separada e uma API de som separada e assim por diante. Os aplicativos que não usam recursos específicos para um tipo específico de hardware podem usar a API de arquivo sem se importar se estão acessando um arquivo normal ou um dispositivo de hardware.

Muitos hardwares possuem recursos específicos para um tipo de dispositivo. Os aplicativos podem invocar esses recursos por meio deioctl. Alguns hardwares não aparecem como arquivos porque você não pode simplesmente ler ou gravar um fluxo de bytes nele. Por exemplo, o Linux não expõe interfaces de rede como arquivos de dispositivos, porque as interfaces de rede funcionam em pacotes, não em bytes individuais.

Historicamente, os terminais eram dispositivos de hardware. Hoje em dia a maioria dos terminais são fornecidos por emuladores, seja em ambiente gráfico ou em rede. No entanto, mesmo os pseudoterminais parecem dispositivos de hardware, porque o kernel contém manipulação especial para rastrear quais processos estão sendo executados em qual terminal.

Em cada variante unix,/dev/ttysignifica “o terminal atual para este processo”. Em outras palavras, sempre que um processo abre esse arquivo, ele designa o nome do processo.terminal de controle). Isso permite que um processo interaja através de seu terminal mesmo quando seus descritores padrão de entrada e saída foram redirecionados.

Cada terminal possui um arquivo de dispositivo associado, que é um terminal de hardware (tty, por exemplo /dev/tty1, /dev/tty2,… para consoles virtuais em modo texto no Linux, ou /dev/ttyS0,… para portas seriais no Linux) ou um terminal emulado (pty, abreviação de pseudo -terminal; /dev/pts/NUMBERno Linux). Este é o arquivo através do qual os processos trocam dados com o driver do terminal ou emulador.

É porque os terminais são arquivos nos quais você pode executar aplicativos e exibir sua saída no terminal. Quando você executa um programa na linha de comando, por padrão, sua saída vai para o terminal, mas você pode redirecioná-lo para um arquivo.

informação relacionada