ฉันพยายามดึงภาพทั้งหมดด้วยตัวอธิบายไฟล์ ว่าฉันมี process1 ซึ่งเริ่มมีไฟล์อธิบายเหล่านี้:
_process1_
| |
| 0 stdin |
| 1 stdout |
| 2 stderr |
|__________|
จากนั้นฉันปิดไฟล์ descriptor 1:
close(1);
แฟ้มบ่ง 1 แปล (คะแนน) ที่ stdout โครงสร้างไฟล์ในเคอร์เนลที่เปิดไฟล์ตาราง
ด้วยรหัสด้านบนตัวอธิบายไฟล์ 1 จะถูกลบออกจากตารางกระบวนการซึ่งกลายเป็น:
_process1_
| |
| 0 stdin |
| 2 stderr |
|__________|
แต่จะเกิดอะไรขึ้นในเคอร์เนล? ที่ไม่stdout
โครงสร้างแฟ้มได้รับ deallocated? เป็นไปได้อย่างไรถ้า stdout เป็นไฟล์พิเศษ (มอนิเตอร์) และอาจถูกใช้โดยกระบวนการอื่น ๆ ? สิ่งที่เกี่ยวกับโครงสร้างไฟล์ที่เป็นเพียงไฟล์ปกติ (เช่น. txt) จะเกิดอะไรขึ้นถ้ากระบวนการอื่นกำลังใช้ไฟล์ดังกล่าวอยู่