相关疑难解决方法(0)

我们如何知道谁在伪终端设备的另一端?

如果我做:

echo foo > /dev/pts/12
Run Code Online (Sandbox Code Playgroud)

某些进程foo\n将从其文件描述符中读取到主端。

有没有办法找出那个(那些)过程是什么?

或者换句话说,我怎么能找出哪个 xterm/sshd/script/screen/tmux/expect/socat... 在 的另一端/dev/pts/12

lsof /dev/ptmx将告诉我在任何 pty 的主端具有文件描述符的进程。一个进程本身可以使用ptsname()TIOCGPTNioctl)根据自己的fd找出从设备到主端,所以我可以使用:

gdb --batch --pid "$the_pid" -ex "print ptsname($the_fd)"
Run Code Online (Sandbox Code Playgroud)

对于lsof构建该映射而返回的每个 pid/fd ,是否有更直接、可靠且侵入性更小的方法来获取该信息?

terminal-emulator open-files pty

29
推荐指数
2
解决办法
6391
查看次数

标签 统计

open-files ×1

pty ×1

terminal-emulator ×1