nswcfd 发表于 2015-05-28 17:12

如何确定/dev/tty对应哪个tty device?

/dev/tty(5:0)指向current->signal->tty,
请问有什么办法(或接口)确定这个tty是哪个tty设备(在某个进程的上下文)?
例如/dev/tty1(4:1)、/dev/ttyS1(4:65)、/dev/pts/1(136:1)、/dev/ttyUSB1(?)

同理/dev/console(5:1)指向console_device,
具体是哪个设备取决于kernel启动参数console=XXX,
有没有办法得到其实际对应的设备device id(例如4:1而不是5:1)?

之所以提出这个问题,是因为有时候需要弄清楚进程的fd=0/1指向哪里?
tty(1)和ttyname(3)通过读取/proc/self/fd/X的符号链接来回答这个问题。
但是当重定向到/dev/tty的时候(例如 tty < /dev/tty),这个方法只能回答到/dev/tty,不能回答/dev/tty是pts还是tty。

请问有没有相关的ioctl可以获取这两个特殊设备映射的实际设备号?

firocu 发表于 2015-12-05 16:02

没找到现成的ioctl函数
1. /dev/tty 与 tty or pts 是一种动态关系. 他的open函数里面也是取
current->signal->tty

2. console
cat /sys/devices/virtual/tty/console/active

senioryzc 发表于 2015-12-07 09:03

ls -l /sys/class/tty
里面就是各个tty指向的设备的link
页: [1]
查看完整版本: 如何确定/dev/tty对应哪个tty device?