tty Arquivo Especial
Propósito
Suporta a interface do terminal de controle.
Descrição
Para cada processo, o arquivo especial /dev/tty especial é um sinônimo para o terminal de controle associado a esse processo. Ao direcionar as mensagens para o arquivo tty , programas de aplicativos e sequências de shell podem garantir que as mensagens sejam gravadas no terminal mesmo que a saída seja redirecionada. Os programas também podem direcionar sua saída de exibição para este arquivo para que não seja necessário identificar o terminal ativo.
Um terminal pode pertencer a um processo como seu terminal de controle. Cada processo de uma sessão que possui um terminal controlador tem o mesmo terminal de controle. Um terminal pode ser o terminal controlador para uma sessão no máximo. Se um líder de sessão não possuir terminal de controle e abrir um arquivo de dispositivo terminal que já não está associado a uma sessão (sem utilizar a opção O_NOCTTY da sub-rotina aberto ), o terminal passa a ser o terminal controlador do líder da sessão. Se um processo que não for um líder de sessão abrir um arquivo de terminal ou se a opção O_NOCTTY for usada, esse terminal não se tornará o terminal controlador do processo de chamada. Quando um terminal de controle passa a ser associado a uma sessão, seu grupo de processos de primeiro plano é configurado para o grupo de processos do líder da sessão.
O terminal de controle é herdado por um processo infantil durante uma subroutina garfo . Um processo não pode acabar com a associação com seu terminal de controle fechando todos os seus descritores de arquivo associados ao terminal de controle caso outros processos continuem a ter o arquivo do terminal aberto. Um processo que não é já o líder de sessão ou um líder de grupo pode quebrar sua associação com o seu terminal de controle usando a subroutine setsid . Outros processos que subsistem na antiga sessão mantêm a sua associação com o terminal de controlo.
Quando o último descritor de arquivo associado a um terminal de controle é fechado (incluindo descritores de arquivo mantidos por processos que não estão na sessão do terminal de controle), o terminal de controle é desassociado de sua sessão atual. O terminal de controle desassociado pode, então, ser adquirido por um novo líder de sessão.
Um processo também pode remover a associação que possui com seu terminal de controle, abrindo o arquivo tty e emitindo o seguinte comando ioctl :
ioctl (FileDescriptor, TIOCNOTTY, 0): Muitas vezes, é útil desassociar processos do servidor de seu terminal de controle para que não possam receber entrada ou serem interrompidos pelo terminal.
Este driver de dispositivo também suporta as disciplinas de linha POSIX e Berkeley.