Apakah file deskriptor 3 yang ditetapkan secara default?


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

Apakah file deskriptor 3 yang ditetapkan secara default?

Jawaban:


34

Tidak ada: ada tiga deskripsi file standar, STDIN, STDOUT, dan STDERR. Mereka ditugaskan untuk masing-masing 0, 1, dan 2.

Apa yang Anda lihat ada artefak cara ls(1)kerjanya: untuk membaca konten /proc/self/fddirektori dan menampilkannya, ia perlu membuka direktori itu.

Itu berarti ia mendapat pegangan file, biasanya yang pertama tersedia ... dengan demikian, 3.

Jika Anda menjalankan, katakanlah, catpada konsol terpisah dan memeriksanya /proc/${pid}/fd, Anda akan menemukan bahwa hanya tiga yang pertama ditugaskan.


Ah, itu menjelaskan hasilnya, termasuk fakta yang 3menunjuk /proc/32157/fdjuga. (Mengapa saya melewatkan itu?) Terima kasih!
musiphil
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.