在Linux和NetBSD系统上,
有没有一种可移植的方法,可以确定任意打开的文件描述符是否指向伪终端的外部,即使
(这将用于类似于
isatty
函数对于在伪终端内部(/dev/pts/0
, /dev/ttyp0
等)或外部(/dev/ptmx
, /dev/ptyp0
等)打开的文件描述符返回true。我可以方便地测试所有的tcgetxxx
操作也无法区分这两种情况。理论上,你可以通过调用fstat
并查看st_rdev
来判断文件描述符是否指向伪终端的外部,但是你必须知道哪些设备号用于什么,而这在不同的系统中是不一致的。有没有一种可移植的方法,可以确定任意打开的文件描述符是否指向伪终端的外部,即使
isatty
函数返回true?由于POSIX只对伪终端进行了粗略的规定,因此我认为没有任何标准的方法,但我希望至少在当前的开源Unix系统中有一种方法可以实现,而不必编译一个支持的操作系统的设备号表。(这将用于类似于
lsof
的检查工具,如果你想知道我为什么要知道这个。)