Câu hỏi Tệp phương tiện có thể phát sau khi xóa?


Tôi đã trải nghiệm nghịch lý sau nhiều lần, và tôi không hiểu nó xảy ra như thế nào.

Tôi mở một tập tin âm nhạc / video lớn (nói 100 MB), và khi nó bắt đầu chơi, tôi xóa nó (vĩnh viễn). Mặc dù vậy, các phương tiện truyền thông sẽ có thể chơi toàn bộ điều.
Tôi đoán nó không đệm toàn bộ tập tin ngay từ đầu, bởi vì

  • sử dụng bộ nhớ của quá trình này chỉ là 15 MB
  • và đó không phải là những gì người chơi truyền thông làm.

vậy nó diễn ra như thế nào?


2
2018-02-11 20:07


gốc




Các câu trả lời:


Các chi tiết chính xác phụ thuộc vào hệ thống của bạn, nhưng ý tưởng cơ bản là hệ thống tệp cơ bản sẽ không kéo tấm thảm ra khỏi dưới một tệp mở. Nó xóa nó từ khắp mọi nơi bạn có thể nhìn thấy nó, nhưng nó sẽ không thực sự làm sạch các khối trên đĩa (cũng không phải một số đại diện của các cấu trúc thư mục trỏ đến tập tin) cho đến khi bạn đóng nó lại.

Trên các hệ thống Unix, điều này là phổ biến: hầu hết các hệ thống tập tin Unix sẽ không thổi bay một inode cho đến khi tập tin mở cuối cùng được đóng lại.

Trên Windows, có vẻ như nếu quá trình mở chỉ định 'FILE_SHARE_DELETE' cho lệnh gọi CreateFile (chương trình có hành vi tốt), thì trình điều khiển hệ thống tệp xử lý việc xóa, nhưng các tệp mở vẫn có thể truy cập nó. Khi HANDLE mở lần cuối cho tệp được đóng lại, tệp sẽ được trình điều khiển hệ thống tệp làm sạch.


6
2018-02-11 20:18



Nhưng tôi sử dụng Windows ... Thời tiết tôi có thể xóa nó hay không có vẻ phụ thuộc vào loại tệp. - Dave
@Dave - xem bản sửa đổi của tôi - Windows có một cách mà (cũng cư xử) các chương trình có thể gây ra điều này để hoạt động chính xác. - Michael Kohne
đã đồng ý, đây là một tác dụng phụ của việc chia sẻ tài nguyên luồng / đa tiến trình. - Frank Thomas