Какой дескриптор файла 3 назначен по умолчанию?

19
$ ls -og /proc/self /proc/self/fd
lrwxrwxrwx 1 64 Jun 18 11:12 /proc/self -> 32157

/proc/self/fd:
total 0
lrwx------ 1 64 Jun 22  2012 0 -> /dev/tty1
lrwx------ 1 64 Jun 22  2012 1 -> /dev/tty1
lrwx------ 1 64 Jun 22  2012 2 -> /dev/tty1
lr-x------ 1 64 Jun 22  2012 3 -> /proc/32157/fd

Какой дескриптор файла 3 назначен по умолчанию?

musiphil
источник

Ответы:

34

Ничего: есть три стандартных описания файлов: STDIN, STDOUT и STDERR. Они назначены на 0, 1 и 2 соответственно.

То, что вы видите, - это артефакт способа ls(1)работы: чтобы прочитать содержимое /proc/self/fdкаталога и отобразить его, ему нужно открыть этот каталог.

Это означает, что он получает дескриптор файла, обычно первый доступный ... таким образом, 3.

Если бы вы запустили, скажем, catотдельную консоль и проверили /proc/${pid}/fdее, вы обнаружите, что были назначены только первые три.

Даниэль Питтман
источник
Ах, это объясняет результат, в том числе и тот факт, который также 3указывает на /proc/32157/fd. (Почему я это пропустил?) Спасибо!
Musiphil