我可以在不打开文件的情况下执行 isatty() 吗

我可以在不打开文件的情况下执行 isatty() 吗

在 Linux 上,

是否可以isatty(fd)在不使用 的情况下执行相当于给定路径的操作open()

我发现我cat了stat()路径确定它是字符设备。接下来,我可以获取主要和次要设备编号,并检查/sys/dev/char/<major>:<minor>/subsystem它是否链接到以/class/tty.这似乎适用于除/dev/pts/<number>设备(未出现在 中/sys/dev/char)之外的情况。

有没有更完整的方法呢?

答案1

尝试用/proc/tty/drivers代替/sys/class/tty.

当然,这不会很稳健。请注意,它isatty()实际上是通过调用 ioctl 来工作的,该 ioctl 只应该在终端 ( tcgetattr()-> ioctl(TCGETS)) 上工作。它不会根据文件的标志或其他元数据进行猜测。

相关内容