在 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)
) 上工作。它不会根据文件的标志或其他元数据进行猜测。