Estou tentando entender como os programas gostam screen
e script
controlam a E/S.
Meu conhecimento de terminal, tty etc. vem da leitura do artigo 'tty desmistificado' e de todas as respostas SE que pude encontrar. Então, pelo que entendi, aproximadamente as interações entre os componentes funcionam da seguinte maneira:
Console(Keyboard+Screen) ---- xterm(pty master) ----- tty line discipline ---- bash/other programs(pty slave)
onde a disciplina de linha está no kernel e xterm e bash são executados no espaço do usuário.
- Isso está correto?
Agora, quando consideramos programas como screen
, script
, eles são programas de espaço de usuário executados em um terminal (o xterm existente), mas são capazes de controlar I/O para/de outros programas. O artigo menciona que isso ocorre porque eles executam outro pseudoterminal dentro do xterm (o pseudoterminal existente).
Isso significa que eles abrem um novo
pty
par mestre-escravo, controlam a extremidade mestre desse novo par e todos os processos iniciados a partir deles são executados no novopty
escravo? Por exemplo, cada vez que inicio uma nova 'tela' e executo otty
comando, ele me mostra um arquivo/dev/pts/x
. Tambémscript
funciona de maneira semelhante?Finalmente, alguém pode me indicar algum artigo/livro onde eu possa obter um pouco mais de detalhes sobre essas coisas (não consegui encontrar nada)?
Também gostaria de fazer referência a esta resposta, embora seja muito breve.
① Sim, xterm e bash são executados no espaço do usuário. Assim como a tela e o roteiro.
② Sim, está correto. Screen é basicamente um emulador de terminal, assim como o XTerm. Exceto, é claro, o XTerm emite comandos para o servidor X11 para exibir o terminal, enquanto a tela emite sequências de controle e texto para outro terminal (que pode ser um emulador de terminal ou um terminal real).
③ O melhor detalhe sobre como esses programas funcionam é provavelmente o código-fonte. Perguntas sobre eles são bem-vindas aqui, é claro, ou perguntas sobre códigos são bem-vindas no Stack Overflow .