เมื่อคุณลบไฟล์คุณจะลบลิงค์ไปยังไฟล์ (ไปยังไอโหนด) หากมีคนเปิดไฟล์นั้นอยู่พวกเขาจะเก็บไฟล์ descriptor ไว้ ไฟล์ยังคงอยู่บนดิสก์เพิ่มพื้นที่และสามารถเขียนและอ่านได้หากคุณสามารถเข้าถึงได้
unlink
ฟังก์ชั่นที่ถูกกำหนดให้มีพฤติกรรมนี้โดย POSIX:
เมื่อจำนวนลิงก์ของไฟล์กลายเป็น 0 และไม่มีกระบวนการใดเปิดไฟล์ใด ๆ พื้นที่ที่ไฟล์ครอบครองจะถูกปล่อยให้เป็นอิสระและไฟล์นั้นจะไม่สามารถเข้าถึงได้อีกต่อไป หากหนึ่งหรือมากกว่ากระบวนการเปิดแฟ้มเมื่อการเชื่อมโยงที่ผ่านมาจะถูกลบออกเชื่อมโยงจะถูกลบออกก่อนที่จะยกเลิกการเชื่อมโยงผลตอบแทน () แต่การกำจัดของเนื้อหาของแฟ้มจะถูกเลื่อนออกไปจนกว่าการอ้างอิงถึงไฟล์ที่มีการปิด
คำแนะนำชิ้นนี้เพราะพฤติกรรมนั้น daemon จะเปิดไฟล์และจะไม่สังเกตว่าไฟล์นั้นถูกลบ (ยกเว้นว่ากำลังตรวจสอบเฉพาะซึ่งเป็นเรื่องผิดปกติ) มันจะเขียนต่อไปยังไฟล์ descriptor ที่มีอยู่เรื่อย ๆ : คุณจะใช้พื้นที่บนดิสก์มากขึ้น (แต่) แต่คุณจะไม่สามารถเห็นข้อความใด ๆ ที่เขียนได้ดังนั้นคุณจะแย่ที่สุด ของโลกทั้งสอง หากคุณตัดทอนไฟล์ให้มีความยาวเป็นศูนย์แทนพื้นที่จะว่างในทันทีและข้อความใหม่ใด ๆ จะถูกต่อท้ายที่ท้ายใหม่ของไฟล์ที่คุณสามารถดูได้
ในที่สุดเมื่อ daemon ยกเลิกหรือclose
s ไฟล์พื้นที่จะว่าง ไม่มีใครใหม่สามารถเปิดไฟล์ในเวลาเฉลี่ย (นอกเหนือจากผ่านอินเตอร์เฟซการสะท้อนแสงเฉพาะระบบเช่นของลินุกซ์/proc/x/fd/...
) รับประกันด้วยว่า:
หากการนับลิงก์ของไฟล์เป็น 0 เมื่อตัวอธิบายไฟล์ทั้งหมดที่เกี่ยวข้องกับไฟล์ถูกปิดพื้นที่ว่างของไฟล์จะเป็นอิสระและไฟล์นั้นจะไม่สามารถเข้าถึงได้อีกต่อไป
ดังนั้นคุณจะไม่สูญเสียพื้นที่ดิสก์อย่างถาวร แต่คุณจะไม่ได้รับอะไรเลยโดยการลบไฟล์และคุณไม่สามารถเข้าถึงข้อความใหม่ได้
/proc/x/fd/y
? นั่นจะทำให้กระบวนการล้มเหลวในการเขียนไปยังไฟล์ descriptor หรือเป็นการดำเนินการที่ผิดกฎหมายหรือไม่?