Esse é o dispositivo mestre do pseudo-terminal no Linux . Mas o xterm usa a função POSIX para abrir o pseudo-terminal, que oculta os detalhes da abertura do dispositivo.
Existem diferentes configurações para pseudo-terminais, mas provavelmente o seu sistema usa este pedaço :
#elif defined(HAVE_POSIX_OPENPT) && defined(HAVE_PTSNAME) && defined(HAVE_GRANTPT_PTY_ISATTY)
if ((*pty = posix_openpt(O_RDWR)) >= 0) {
char *name = ptsname(*pty);
if (name != 0) {
strcpy(ttydev, name);
result = 0;
}
}
VTE (o emulador de terminal real: "gnome-terminal" é uma fachada ) usa algo semelhante (consulte src / pty.cc ).
Na prática, não é necessário continuar usando o descritor de arquivo para o dispositivo mestre. O xterm é executado como dois processos e usa esse descritor de arquivo em seu processo "pai". Ele descarta o descritor de arquivo para o dispositivo mestre em seu processo "filho" (veja fonte) .
Quando você executa o xterm, o processo filho é aquele com o qual seu shell fala, por exemplo, se você executar tty
para ver qual terminal está usando ( que está usando o lado escravo do pseudo-terminal, e o lado mestre está fechado porque cada processo só precisa trabalhar com um lado do pseudo-terminal). / p>
O processo pai (que tem /dev/ptmx
open) gerencia a exibição da janela X.
Dado tudo isso, eu esperaria ver lsof
show xterm tendo /dev/ptmx
aberto. Exceto:
- em suas capturas de tela, a mensagem sugere que você não está executando como root e, se houver um problema de permissões com
lsof
, o que impede que ele veja todos os processos, isso poderia para a informação que falta. - seu xterm não está sendo executado na máquina em que você está executando
lsof
, por exemplo, se você tiver ssh na máquina (e acontecer de você estar vendognome-terminal
em execução em uma sessão diferente).