Qual è il descrittore di file 3 assegnato per impostazione predefinita?


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

Qual è il descrittore di file 3 assegnato per impostazione predefinita?

Risposte:


34

Niente: ci sono tre descrizioni di file standard, STDIN, STDOUT e STDERR. Sono assegnati rispettivamente a 0, 1 e 2.

Quello che vedi è un artefatto del modo in cui ls(1)funziona: per leggere il contenuto della /proc/self/fddirectory e visualizzarlo, è necessario aprire quella directory.

Ciò significa che ottiene un handle di file, in genere il primo disponibile ... quindi, 3.

Se dovessi correre, diciamo, catsu una console separata e ispezionarla /proc/${pid}/fd, scopriresti che solo i primi tre sono stati assegnati.


Ah, questo spiega il risultato, incluso il fatto che 3indica /proc/32157/fdanche. (Perché mi sono perso?) Grazie!
musiphil,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.