在Linux中,每个终端只与一个会话相关联(会话具有一个或多个进程组,进程组具有一个或多个进程)。
是否有一些函数(或命令)接受tty设备文件(例如:/dev/tty1
或/dev/pts/0
)并返回与此tty / terminal关联的会话ID?
答案 0 :(得分:0)
执行以下步骤:
stat
您要检查的TTY。特别是,找出它正在使用的主要/次要设备ID。使用公式major*256+minor
将它们合并为一个数字(或者只从stat
获取原始数字)
打开/proc/
并扫描名称仅为数字的所有目录。目录的名称是系统中进程的pid
。
对于每个此类目录,打开/proc/pid/stat
,并将文件解析为由空格分隔的字段(第二个字段除外,其中包含括号)。第7个字段将是TTY设备的主要/次要。扫描,直到找到与您正在查找的TTY相匹配的那个。
该文件中的第6个字段是进程的sid
(您要查找的数字)。第8个字段是TTY的pgrp
。
详细文件结构here。