Khi bạn xóa một tập tin, bạn thực sự xóa một liên kết đến tập tin (đến nút). Nếu ai đó đã mở tệp đó, họ có thể giữ mô tả tệp họ có. Các tập tin vẫn còn trên đĩa, chiếm không gian, và có thể được ghi và đọc từ nếu bạn có quyền truy cập vào nó.
Các unlink
chức năng được xác định với hành vi này bằng POSIX:
Khi số liên kết của tệp trở thành 0 và không có quá trình nào mở tệp, không gian bị chiếm bởi tệp sẽ được giải phóng và tệp sẽ không thể truy cập được nữa. Nếu một hoặc nhiều quá trình mở tệp khi liên kết cuối cùng bị xóa, liên kết sẽ bị xóa trước khi hủy liên kết (), nhưng việc xóa nội dung tệp sẽ bị hoãn cho đến khi tất cả các tham chiếu đến tệp được đóng lại .
Lời khuyên này vì hành vi đó. Trình nền sẽ mở tệp và sẽ không nhận thấy rằng nó đã bị xóa (trừ khi nó đang theo dõi cụ thể, điều này không phổ biến). Nó sẽ tiếp tục ghi hoàn toàn vào bộ mô tả tệp hiện có: bạn sẽ tiếp tục chiếm (thêm) dung lượng trên đĩa, nhưng bạn sẽ không thể thấy bất kỳ thư nào mà nó viết, vì vậy bạn thực sự đang ở tình trạng tồi tệ nhất của cả hai thế giới. Thay vào đó, nếu bạn cắt tệp thành độ dài bằng 0 thì không gian sẽ được giải phóng ngay lập tức và mọi thông báo mới sẽ được thêm vào ở phần cuối mới của tệp nơi bạn có thể nhìn thấy chúng.
Cuối cùng, khi trình nền kết thúc hoặc close
s tệp , không gian sẽ được giải phóng. Không ai mới có thể mở tệp trong thời gian trung bình (ngoài giao diện phản chiếu dành riêng cho hệ thống như của Linux/proc/x/fd/...
). Nó cũng đảm bảo rằng:
Nếu số lượng liên kết của tệp là 0, khi tất cả các mô tả tệp được liên kết với tệp bị đóng, không gian bị chiếm bởi tệp sẽ được giải phóng và tệp sẽ không thể truy cập được nữa.
Vì vậy, bạn không mất dung lượng đĩa vĩnh viễn, nhưng bạn không thu được gì bằng cách xóa tệp và bạn mất quyền truy cập vào thư mới.
/proc/x/fd/y
? Điều đó sẽ khiến quá trình không thể ghi vào bộ mô tả tập tin, hay đó là một hoạt động bất hợp pháp?