David G. Asked: 2021-12-12 06:54:39 +0800 CST2021-12-12 06:54:39 +0800 CST 2021-12-12 06:54:39 +0800 CST 我可以在不打开文件的情况下执行 isatty() 772 在 Linux 上, 是否可以在不使用的情况下做相当于isatty(fd)给定路径的操作open()? 我发现我stat()的路径确定它是一个字符设备。接下来,我可以获取主要和次要设备号并检查/sys/dev/char/<major>:<minor>/subsystem它是否链接到以/class/tty. 这似乎适用于/dev/pts/<number>设备(未出现在 中/sys/dev/char)。 有没有更完整的方法? linux c 1 个回答 Voted Best Answer confabulator 2021-12-12T07:29:33+08:002021-12-12T07:29:33+08:00 尝试使用/proc/tty/drivers而不是/sys/class/tty. 当然,这不会很健壮。请注意,它isatty()通过实际调用只应该在终端 ( tcgetattr()-> ioctl(TCGETS)) 上工作的 ioctl 来工作。它不会从文件的标志或其他元数据中猜测。
尝试使用
/proc/tty/drivers
而不是/sys/class/tty
.当然,这不会很健壮。请注意,它
isatty()
通过实际调用只应该在终端 (tcgetattr()
->ioctl(TCGETS)
) 上工作的 ioctl 来工作。它不会从文件的标志或其他元数据中猜测。