Jaki deskryptor pliku 3 jest domyślnie przypisany?

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

Jaki deskryptor pliku 3 jest domyślnie przypisany?

musiphil
źródło

Odpowiedzi:

34

Nic: istnieją trzy standardowe opisy plików: STDIN, STDOUT i STDERR. Są one przypisane odpowiednio do 0, 1 i 2.

To, co widzisz, jest artefaktem sposobu ls(1)działania: aby odczytać zawartość /proc/self/fdkatalogu i wyświetlić go, musi on otworzyć ten katalog.

Oznacza to, że pobiera uchwyt pliku, zwykle pierwszy dostępny ... a więc 3.

Gdybyś miał uruchomić, powiedzmy, catna osobnej konsoli i sprawdzić /proc/${pid}/fd, czy nie, przydzielono by tylko trzy pierwsze.

Daniel Pittman
źródło
Ach, to tłumaczy wynik, w tym również fakt, który na to 3wskazuje /proc/32157/fd. (Dlaczego mi tego brakowało?) Dziękuję!
musiphil