file descriptor 3 ที่กำหนดโดยค่าเริ่มต้นคืออะไร?


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

file descriptor 3 ที่กำหนดโดยค่าเริ่มต้นคืออะไร?

คำตอบ:


34

ไม่มีอะไร: มีสามคำอธิบายไฟล์มาตรฐาน, STDIN, STDOUT และ STDERR พวกมันถูกกำหนดให้เป็น 0, 1 และ 2 ตามลำดับ

สิ่งที่คุณเห็นมีสิ่งประดิษฐ์ของวิธีการls(1)ทำงาน: เพื่อที่จะอ่านเนื้อหาของ/proc/self/fdไดเรกทอรีและแสดงมันจะต้องเปิดไดเรกทอรีนั้น

ซึ่งหมายความว่าจะได้รับการจัดการไฟล์โดยทั่วไปพร้อมใช้งานครั้งแรก ... ดังนั้น 3

หากคุณต้องวิ่งพูดcatบนคอนโซลแยกต่างหากและตรวจสอบ/proc/${pid}/fdมันคุณจะพบว่ามีเพียงสามคนแรกเท่านั้นที่ได้รับมอบหมาย


อาที่อธิบายผลรวมถึงความจริงที่3ชี้ไป/proc/32157/fdเช่นกัน (ทำไมฉันถึงคิดถึงเรื่องนี้?) ขอบคุณ!
musiphil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.