如果我做:
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 ,是否有更直接、可靠且侵入性更小的方法来获取该信息?