查看dev下的文件详细

[root@test-master ~]# ll /dev/
···
lrwxrwxrwx 1 root root          15 Dec  7  2018 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root          15 Dec  7  2018 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root          15 Dec  7  2018 stdout -> /proc/self/fd/1
···
  • 发现stdin对应操作符0
  • stdout对应操作符1
  • stderr对应操作符2

查看操作符0详细

[root@test-master ~]# ll /proc/self/fd/0
lrwx------ 1 root root 64 Dec 27 14:59 /proc/self/fd/0 -> /dev/pts/3
  • 发现操作符0软链到/dev/pts/3

查看/dev/pts文件夹下文件详情

[root@test-master ~]# ll /dev/pts
total 0
crw--w---- 1 root tty  136, 0 Dec 27 14:19 0
crw------- 1 root root 136, 1 Dec 27 14:08 1
crw--w---- 1 root tty  136, 3 Dec 27 15:02 3
c--------- 1 root root   5, 2 Dec  7  2018 ptmx
  • 0/1/3分别对应三个窗口连接
  • 当新打开一个窗口连接时,此处会新增一个文件

在一个窗口中向另外一个窗口发送数据

[root@test-master dev]# ll /proc/self/fd/0
lrwx------ 1 root root 64 Dec 27 15:04 /proc/self/fd/0 -> /dev/pts/0
[root@test-master dev]# echo "test" > /dev/pts/3

另一个窗口收到内容

[root@test-master ~]# test

打开某个文件,查看fd的情况

  • vim打开任一文件
[root@test-master ~]# vi anaconda-ks.cfg
  • 通过ctrl+z将vim置于后台
  • 查看vi进程的进程号
[root@test-master ~]# ps -ef|grep vi
root       374 58881  0 15:46 pts/3    00:00:00 vi anaconda-ks.cfg
  • 查看该进程的操作符
    [root@test-master ~]# ll /proc/374/fd/
    total 0
    lrwx------ 1 root root 64 Dec 27 15:48 0 -> /dev/pts/3
    lrwx------ 1 root root 64 Dec 27 15:48 1 -> /dev/pts/3
    lrwx------ 1 root root 64 Dec 27 15:47 2 -> /dev/pts/3
    lrwx------ 1 root root 64 Dec 27 15:48 4 -> /root/.anaconda-ks.cfg.swp
    
    • 其中0/1/2分别对应 stdin/stdout/stderr
    • 4对应的即为该文件的操作符
  • 恢复vi
[root@test-master temp]# jobs
[1]-  Stopped                 vi anaconda-ks.cfg  (wd: ~)
[2]+  Stopped                 vi ca.crt
[root@test-master temp]# fg 1

参考