Quel est le descripteur de fichier 3 attribué par défaut?

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

Quel est le descripteur de fichier 3 attribué par défaut?

musiphil
la source

Réponses:

34

Rien: il existe trois descriptions de fichiers standard, STDIN, STDOUT et STDERR. Ils sont respectivement attribués à 0, 1 et 2.

Ce que vous voyez là est un artefact du ls(1)fonctionnement: pour lire le contenu du /proc/self/fdrépertoire et l'afficher, il doit ouvrir ce répertoire.

Cela signifie qu'il obtient un descripteur de fichier, généralement le premier disponible ... donc, 3.

Si vous deviez exécuter, par exemple, catsur une console distincte et l'inspecter /proc/${pid}/fd, vous constateriez que seuls les trois premiers étaient attribués.

Daniel Pittman
la source
Ah, cela explique le résultat, y compris le fait qu'il 3pointe /proc/32157/fdégalement. (Pourquoi ai-je raté ça?) Merci!
musiphil