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?

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.