pty Arquivo Especial
Propósito
Fornece o driver de dispositivo pseudo-terminal (pty).
Descrição
No ' AIX Versão 4, o subsistema pty usa convenções de nomenclatura semelhantes às do ' UNIX do Sistema V. Há um nó para o driver de controle, ' /dev/ptc, e um número máximo de nós ' N para os drivers de trabalho, ' /dev/pts/ 'n. N é configurável em configuração pty e pode ser alterada dinamicamente por reconfiguração de pty, sem fechar os dispositivos abertos.
O dispositivo de controle é configurado como um dispositivo clone cujo número de dispositivo principal é o número maior do dispositivo clone e cujo número de dispositivo menor é o número maior do driver de controle. Não há nenhum nó no sistema de filesystem para dispositivos de controle. Um dispositivo de controle pode ser aberto apenas uma vez, mas os dispositivos do trabalhador podem ser abertos várias vezes.
Ao abrir o dispositivo de controle com o arquivo especial /dev/ptc , um aplicativo pode abrir rapidamente o controle e os lados do trabalhador de um pseudo-terminal não utilizado. O nome do lado do trabalhador correspondente pode ser recuperado usando o subroutine ttyname , que sempre retorna o nome do lado do trabalhador.
Com os subsistemas Berkeley pty, os comandos têm que procurar um pseudo-terminal não utilizado, abrindo cada lado controle sequencialmente. O lado do controle não poderia ser aberto se já estivesse em uso. Assim, o abrir falharia, configurando a variável errno para EIO, até que um pseudo-terminal não utilizado foi encontrado. É possível configurar o subsistema pty a fim de usar arquivos especiais com a convenção de nomenclatura pty BSD:
| Item | Descrição |
|---|---|
| Dispositivos de controlo | /dev/pty[p-zA-Z][0-f] |
| dispositivos do trabalhador | /dev/tty[p-zA-Z][0-f] |
Esses arquivos especiais não são links simbólicos para os arquivos especiais do sistema operacional. Eles são completamente separados. O número de dispositivos de controle e de pares de trabalhadores usando a convenção de nomenclatura BSD é configurável.
Os seguintes comandos ioctl aplicam-se a pseudo-terminais:
| Item | Descrição |
|---|---|
| TIOCSTOP | Pára a saída para um terminal. Isso é o mesmo que usar a sequência de chaves Ctrl-S. Nenhum parâmetro é permitido para este comando. |
| TIOCSTART | Reinicia a saída que foi interrompida por um comando TIOCSTOP ou pela sequência de chaves Ctrl-S. Isso é o mesmo que digitar a sequência de chaves Ctrl-Q. Nenhum parâmetro é permitido para este comando. |
| TIOCPKT | Ativa e desabilita o modo de pacote. O modo de pacote é ativado especificando (por referência) um parâmetro não zero. Ele é desativado especificando (por referência) um parâmetro zero. Quando aplicados ao lado de controle de um pseudo-terminal, cada leitura subsequente do terminal devolve dados gravados na parte do trabalhador do pseudo terminal. Os dados são precedidos quer por um byte zero (simbolicamente definido como TIOCPKT_DATA) ou por um único byte que reflete informações de status de controle. Neste último caso, o byte é um OR inclusivo ou igual a zero ou mais dos bits a seguir:
Enquanto este modo está em uso, a presença de informações de status de controle a serem lidas a partir do lado de controle pode ser detectada por um select para condições excepcionais. Este modo é usado pelos comandos rlogin e rlogind para fazer login em um host remoto e implementar o ecoing remoto e o controle de fluxo local de Ctrl-S e Ctrl-Q com flushing de saída adequado. |
| TIOCUCNTL | Ativa e desabilita um modo que permite que um pequeno número de comandos simples do usuário ioctl seja passado através do pseudo-terminal, usando um protocolo similar ao do modo TIOCPKT . Os modos TIOCUCNTL e TIOCPKT são mutuamente exclusivos. Este modo é ativado a partir do lado de controle de um pseudo-terminal especificando (por referência) um parâmetro não zero. Ele é desativado especificando (por referência) um parâmetro zero. Cada leitura subsequente do lado de controle retornará dados escritos sobre a parte do trabalhador do pseudo-terminal, precedida por um byte zero ou por um único byte que reflete uma operação de controle do usuário no lado do trabalhador. Um comando de controle do usuário consiste em uma operação ioctl especial sem dados. Esse comando é emitido como UIOCCMD (Value), onde o parâmetro Value especifica um número na faixa de 1 até 255. O valor da operação é recebido como um único byte na próxima leitura a partir do lado controle. Um valor de 0 pode ser usado com a operação ioctl UIOCCMD para sondar para a existência dessa instalação. O zero não é disponibilado para leitura pelo lado do controle. As operações de comando podem ser detectadas com um select para condições excepcionais. |
| TIOCREMOTO | Um modo para o controle metade de um pseudo-terminal, independente de TIOCPKT. Este modo implementa controle de fluxo, em vez de edição de entrada, para entrada para o pseudo-terminal, independentemente do modo terminal. Cada gravação para o terminal de controle produz um limite de registro para o processo lendo o terminal. No uso normal, uma gravação de dados é como os dados digitados como uma linha no terminal, enquanto que uma gravação de zero bytes é como digitar um caractere de fim de arquivo. Este modo é usado para edição de linha remota em um gerenciador de janela e entrada controlada por fluxo. |