No Linux,
É possível fazer o equivalente a isatty(fd)
um determinado caminho e sem usar open()
?
Descobri que eu cato stat()
o caminho para determinar que é um dispositivo de caractere. Em seguida, posso pegar os números de dispositivos principais e secundários e verificar /sys/dev/char/<major>:<minor>/subsystem
se há um link para algo que termine em /class/tty
. Isso parece funcionar, exceto para /dev/pts/<number>
dispositivos (que não aparecem em /sys/dev/char
).
Existe um método mais completo?
Tente com
/proc/tty/drivers
em vez de/sys/class/tty
.Isso não será muito robusto, é claro. Observe que
isatty()
funciona realmente chamando um ioctl que deve funcionar apenas em terminais (tcgetattr()
->ioctl(TCGETS)
). Ele não adivinha dos sinalizadores do arquivo ou de outros metadados.