2

在Linux中,每个终端只关联一个会话(一个会话有一个或多个进程组,一个进程组有一个或多个进程)。

是否有一些函数(或命令)采用 tty 设备文件(例如:/dev/tty1/dev/pts/0)并返回与此 tty/终端关联的会话 ID?

4

1 回答 1

1

执行以下步骤:

  1. stat您要检查的 TTY。特别是,找出它正在使用的主要/次要设备 ID。使用公式将它们组合成一个数字major*256+minor(或仅从 中获取原始数字stat

  2. 打开/proc/并扫描所有名称仅为数字的目录。该目录的名称是pid系统中一个进程的名称。

  3. 对于每个这样的目录,打开/proc/pid/stat文件并将其解析为由空格分隔的字段(第二个字段除外,它周围有括号)。第 7 个字段将是 TTY 设备的主要/次要。扫描,直到找到与您正在寻找的 TTY 匹配的一个。

  4. 该文件中的第 6 个字段是sid进程的(您要查找的数字)。第 8 个字段是 TTY 的pgrp.

文件结构在这里详述。

于 2017-11-10T18:23:41.610 回答