ถ้าฉันทำ (ในเชลล์เหมือนบอร์น):
exec 3> file 4>&3 5> file 6>> file
ตัวอธิบายไฟล์ 3 และ 4 ตั้งแต่ 4 เป็นdup()
ed จาก 3 แชร์คำอธิบายไฟล์แบบเปิดเดียวกัน (คุณสมบัติเดียวกันชดเชยแบบเดียวกันภายในไฟล์ ... ) ในขณะที่ตัวอธิบายไฟล์ 5 และ 6 ของกระบวนการนั้นอยู่ในคำอธิบายไฟล์แบบเปิดที่แตกต่างกัน(ตัวอย่างเช่นแต่ละไฟล์มีตัวชี้ในไฟล์)
ขณะนี้ในlsof
การส่งออกทั้งหมดที่เราเห็นคือ:
zsh 21519 stephane 3w REG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 4w REG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 5w REG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 6w REG 254,2 0 10505865 /home/stephane/file
มันค่อนข้างดีขึ้นด้วยlsof +fg
:
zsh 21519 stephane 3w REG W,LG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 4w REG W,LG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 5w REG W,LG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 6w REG W,AP,LG 254,2 0 10505865 /home/stephane/file
(ที่นี่บน Linux 3.16) ที่เราเห็นว่า fd 6 มีค่าสถานะที่แตกต่างกันดังนั้นจึงต้องมีคำอธิบายไฟล์เปิดที่แตกต่างจากที่หนึ่งใน fd 3, 4 หรือ 5 แต่จากที่เราไม่สามารถบอกได้ว่า fd 5 อยู่บน ที่แตกต่างกันคำอธิบายเปิดแฟ้ม ด้วย-o
เรายังจะได้เห็นการชดเชย แต่อีกเดียวกันชดเชยไม่ได้รับประกันว่ามันเหมือนคำอธิบายเปิดแฟ้ม
มีผู้ใดที่ไม่ล่วงล้ำ1วิธีการหาที่? ภายนอกหรือสำหรับตัวอธิบายไฟล์ของกระบวนการ
1 . วิธีการแก้ปัญหาด้วยวิธีหนึ่งอาจเป็นการเปลี่ยนสถานะของหนึ่ง fd ด้วยfcntl()
และดูว่า file descriptors อื่น ๆ มีการปรับปรุงสถานะเป็นอย่างไร แต่เห็นได้ชัดว่าไม่ใช่อุดมคติหรือหลักฐานโง่