O conteúdo do diretório / dev / fd tem arquivo de diferença de uma só vez

0

Eu tenho esse comando.

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

Depois desse código.Você vai encontrar

#ls /dev/fd

0 1 2 3

#cd /dev/fd;ls

0 1 2 255

Divertido, o diretório /dev/fd tem conteúdo diferenciado ... O que aconteceu?

    
por yode 10.07.2017 / 17:02

1 resposta

1

/dev/fd não é um diretório fixo, mas um symlink que aponta para um diretório por processo. Em suas duas invocações de ls , você está listando o conteúdo de dois "diretórios" diferentes.

Sua primeira saída fornece os descritores de arquivo associados a ls . A segunda saída fornece os descritores de arquivos associados a bash . O echo e exec que precede as listagens de diretório não alteram isso.

Considere:

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
    
por 10.07.2017 / 18:19