目录 /dev/fd 的内容一次有差异文件

目录 /dev/fd 的内容一次有差异文件

我有这样的命令。

#echo -e "ls\npwd" >test
#bash
#exec <test

这段代码之后,你会发现

#ls /dev/fd

0 1 2 3

#cd /dev/fd;ls

0 1 2 255

有趣,目录/dev/fd内容不同..发生了什么?

答案1

/dev/fd不是固定目录,而是指向每个进程的目录的符号链接。在两次调用中ls,您列出了两个不同“目录”的内容。

您的第一个输出给出了与ls.第二个输出给出与 关联的文件描述符bashecho和前面的目录列表exec不会改变这一点。

考虑:

foo:~$ ls -ln /dev/fd/
total 0
lrwx------ 1 1000 1000 64 Jul 10 12:13 0 -> /dev/pts/19
lrwx------ 1 1000 1000 64 Jul 10 12:13 1 -> /dev/pts/19
lrwx------ 1 1000 1000 64 Jul 10 12:13 2 -> /dev/pts/19
lr-x------ 1 1000 1000 64 Jul 10 12:13 3 -> /proc/20115/fd
foo:~$ cat /dev/fd/../cmdline && echo
cat/dev/fd/../cmdline

foo:~$ cd /dev/fd ; ls -ln
total 0
lrwx------ 1 1000 1000 64 Jul  8 05:01 0 -> /dev/pts/19
lrwx------ 1 1000 1000 64 Jul  8 05:01 1 -> /dev/pts/19
lrwx------ 1 1000 1000 64 Jul  8 05:01 2 -> /dev/pts/19
lrwx------ 1 1000 1000 64 Jul  8 05:01 255 -> /dev/pts/19
foo:/dev/fd$ cat ../cmdline && echo
bash
foo:/dev/fd$ pwd -P
/proc/2689/fd

相关内容