Tuyên bố từ chối trách nhiệm: Tôi chủ yếu là nhà phát triển web/linux.Chúng tôi có thể xóa một tệp mở trong Windows không?
Windows có tính năng "đẹp" này khi từ chối quyền xóa bất kỳ tệp nào được mở bởi bất kỳ quá trình nào. Vì vậy, nếu một phần mềm chống vi-rút truy cập sai tệp vào thời điểm sai, một số chương trình ngẫu nhiên có thể bị lỗi và có thể bị lỗi.
Tôi có đúng không? Có kế hoạch sửa lỗi này không?
Có ai trong số các bạn thấy điều này có thể chấp nhận được không, hoặc, làm thế nào nó có thể có vẻ là một ý tưởng hay vào thời điểm đó?
Chỉnh sửa:
Nó hoạt động rất khác trên Unix và đã tồn tại hàng thập kỷ.
Như một ví dụ:
- quá trình 1 mở foo.txt, để đọc hoặc viết, hoặc cả hai, không quan trọng
- quá trình 2 xóa các tập tin
- tập tin bị hủy liên kết từ hệ thống tập tin
- quy trình 1 tiếp tục đọc và/hoặc ghi, tệp vẫn tồn tại và có thể phát triển miễn là có chỗ trên đĩa. Nó chỉ là không thể truy cập từ các quy trình khác mà chưa có một tập tin xử lý nó.
- khi quá trình 1 đóng tập tin, nó sẽ không thể truy cập từ bất cứ nơi nào
Trên thực tế, một mô hình sử dụng phổ biến cho các tập tin tạm thời trên Unix là: open-remove-read/write-gần.
Ngược lại với việc xóa tệp mà quy trình khác sử dụng mà không có cảnh báo, điều này chắc chắn sẽ không khiến chương trình đó hoạt động không đúng và có thể bị lỗi. Có những chương trình như trình mở khóa cho phép bạn đóng các tệp xử lý, nhưng tôi không thể biết cách xóa tệp đang sử dụng là một ý tưởng hay. – IVlad
Nhưng, nếu ai đó xóa một tệp đang xử lý 1 đang sử dụng, làm cách nào để xử lý 1 lỗi hoặc sự cố?Các tập tin vẫn còn đó, có thể được đọc hoặc viết, nó chỉ là không có sẵn nếu bạn không có một filehandle đã mở. –
Nó chỉ là một trong nhiều quyết định triết học mà hai nền tảng khác nhau. Cả hai phương pháp đều có ưu và khuyết điểm của họ, mặc dù cá nhân tôi không tìm thấy một trong hai phương pháp để được tổng thể tốt hơn hoặc tồi tệ hơn khác. Khi bạn phát triển cho một nền tảng, bạn cần phải nhận thức được tính đồng nhất và xử lý chúng một cách thích hợp. Nếu bạn không làm điều này và chương trình của bạn bị treo thì chương trình của bạn có lỗi, không phải nền tảng. – Luke