在Linux中,每个终端只关联一个 session (一个 session 有一个或多个进程组,一个进程组有一个或多个进程)。
是否有一些函数(或命令)接受 tty 设备文件(例如:/dev/tty1
或 /dev/pts/0
)并返回与此 tty/终端关联的 session ID?
最佳答案
执行以下步骤:
stat
您要检查的 TTY。特别是找出它正在使用的主要/次要设备 ID。使用公式major*256+minor
将它们组合成一个数字(或者只从stat
中获取原始数字)打开
/proc/
,扫描所有名字只有数字的目录。该目录的名称是系统中进程的pid
。对于每个这样的目录,打开
/proc/pid/stat
,并将文件解析为由空格分隔的字段(第二个字段除外,它有括号)。第 7 个字段将是 TTY 设备的主要/次要。扫描直到找到与您正在寻找的 TTY 匹配的电话。该文件中的第 6 个字段是进程的
sid
(您要查找的编号)。第 8 个字段是 TTY 的pgrp
。
文件结构详解here .
关于c - 如何获取与终端关联的 session 的 session ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47227764/