ถ้าคุณทำrm myFile
ที่myFile
เป็นลิงค์ที่ยากจะเกิดอะไรขึ้น
ถ้าคุณทำrm myFile
ที่myFile
เป็นลิงค์ที่ยากจะเกิดอะไรขึ้น
คำตอบ:
ใน Unix ไฟล์ปกติทั้งหมดคือฮาร์ดลิงก์ hardlinks ใน Unix (และส่วนใหญ่ (ทั้งหมด?)) inode
ระบบไฟล์ที่มีการอ้างอิงถึงสิ่งที่เรียกว่า inode
มีเคาน์เตอร์อ้างอิงเมื่อคุณมี "การเชื่อมโยง" หนึ่งแฟ้ม (ซึ่งเป็นวิธีการทำงาน operandi ปกติ) เคาน์เตอร์คือ 1. เมื่อคุณสร้างที่สองสามสี่ลิงก์ ฯลฯ เคาน์เตอร์จะเพิ่มขึ้น (เพิ่มขึ้น) แต่ละ เวลาโดยหนึ่ง เมื่อคุณลบ ( rm
) ลิงค์เคาน์เตอร์จะลดลง (ลดลง) หนึ่งรายการ หากตัวนับลิงก์ถึง 0 ระบบไฟล์จะลบinode
และทำเครื่องหมายพื้นที่ที่พร้อมใช้งาน
ในระยะสั้นตราบใดที่คุณไม่ได้ลบลิงค์สุดท้ายไฟล์จะยังคงอยู่
Edit:
ไฟล์ที่จะยังคงอยู่แม้ว่าการเชื่อมโยงที่ผ่านมาจะถูกลบออก นี่เป็นวิธีหนึ่งในการรับรองความปลอดภัยของข้อมูลที่อยู่ในไฟล์ไม่สามารถเข้าถึงได้โดยกระบวนการอื่น ๆ การลบข้อมูลออกจากระบบไฟล์นั้นเสร็จสิ้นก็ต่อเมื่อข้อมูลนั้นมี 0 ลิงก์ที่เชื่อมโยงกับข้อมูลดังกล่าวในข้อมูลเมตาและไม่ได้ถูกใช้โดยกระบวนการใด ๆ
IMHO นี้เป็นวิธีที่ง่ายที่สุดในการทำความเข้าใจฮาร์ดลิงก์ (และความแตกต่างจากซอฟต์ลิงค์)
unlink
เอ็ด
/proc
เป็นระบบไฟล์แยกต่างหาก (เสมือน)
unlink()
เพื่อลบไฟล์ทำให้ฉันงุนงงไม่สิ้นสุดเมื่อฉันเริ่มเล่นกับการเขียนโปรแกรม C บน MS-DOS บางครั้งย้อนกลับไปในช่วงครึ่งแรกของปี 1990 :)
การทดสอบง่ายกว่าที่ฉันคิด: ฉันสร้างไฟล์ข้อความแล้วเชื่อมโยงกับไฟล์นั้นอย่างหนัก การลบฮาร์ดลิงก์ไม่ได้เป็นการลบไฟล์ที่ฮาร์ดลิ้งค์ไปและไฟล์ที่ลิงค์ไปยังคงอยู่
ไฟล์ทั้งหมดในดิสก์ของคุณเป็นตัวชี้ไปยังข้อมูลจริงในไดรฟ์ของคุณ
เมื่อคุณสร้างฮาร์ดลิงก์สำหรับไฟล์นั้นไฟล์ hardlink-ed จะชี้ไปที่ข้อมูลเดียวกันกับไฟล์ต้นฉบับที่ชี้ไป
ดังในตัวอย่างนี้ a.txt ชี้ไปที่ข้อมูล (ไบต์) ของไฟล์ที่อยู่ในไดรฟ์เมื่อสร้าง hardlink b.txt ขึ้นมามันจะชี้ไปที่สิ่งที่ a.txt ชี้ไป
ดังนั้นการลบอันใดอันหนึ่งจะไม่ส่งผลกระทบต่ออีกอันหนึ่งซึ่งแยกออกจากกัน
แต่เมื่อคุณลบทั้งสองระบบจะเห็นว่าข้อมูลที่อยู่ในดิสก์ไม่มีไฟล์ที่ชี้ไปดังนั้นระบบจะพิจารณาว่าเป็นพื้นที่ว่างและจะเขียนทับเมื่อต้องการ
FILE "A.txt"
เป็นเหมือนLINK "B.txt"
โดยเฉพาะอย่างยิ่งเมื่อคุณได้เรียกว่าหนึ่งและอื่นFILE
ๆ LINK
ลิงค์นี้เป็นลูกศรสีดำจริงๆ
unlink()
นอกจากนี้ยังมีการเรียกระบบสำหรับการลบไฟล์ที่เป็น