AFAIK, OS X là một dẫn xuất BSD, không có khóa tệp bắt buộc thực sự. Nếu có, có vẻ như tôi không có cách nào để ngăn việc truy cập bằng văn bản từ các chương trình khác ngay cả khi tôi đang viết một tệp.Làm thế nào để đảm bảo tính toàn vẹn của tệp mà không cần khóa tệp bắt buộc trên OS X?
Làm thế nào để đảm bảo tính toàn vẹn tệp trong môi trường như vậy? Tôi không quan tâm đến tính toàn vẹn sau khi chương trình của tôi đã thoát, bởi vì đó là trách nhiệm của người dùng. Nhưng ít nhất, tôi nghĩ rằng tôi cần một số loại bảo đảm trong khi chương trình của tôi đang chạy.
Làm cách nào để các chương trình khác đảm bảo tính toàn vẹn nội dung tệp mà không cần khóa bắt buộc? Đặc biệt là chương trình cơ sở dữ liệu. Nếu có kỹ thuật chung hoặc thực hành được khuyến nghị, vui lòng cho tôi biết.
Cập nhật
Tôi đang tìm kiếm này cho lớp dữ liệu của ứng dụng GUI cho người dùng không kỹ sư. Và hiện tại, chương trình của tôi có những tình huống này.
Dữ liệu quá lớn nên không thể phù hợp với RAM. Và thậm chí khó có thể được sao chép tạm thời. Vì vậy, nó không thể được đọc/ghi nguyên tử, và nên được sử dụng từ đĩa trực tiếp trong khi chương trình đang chạy.
Ứng dụng trình soạn thảo nội dung GUI chuyên nghiệp dài chạy được sử dụng bởi những người không phải là kỹ sư. Mặc dù người dùng không phải là kỹ sư, nhưng họ vẫn có thể truy cập tệp đồng thời với Trình tìm kiếm hoặc các chương trình khác. Vì vậy, người dùng có thể xóa hoặc viết trên tập tin hiện đang sử dụng vô tình. Vấn đề là người dùng không hiểu những gì đang thực sự xảy ra, và mong đợi chương trình xử lý toàn vẹn tập tin ít nhất là chương trình đang chạy.
Tôi nghĩ rằng cách duy nhất để đảm bảo tính toàn vẹn của tập tin trong tình hình hiện nay là,
- mở tập tin với khóa bắt buộc độc quyền trên toàn hệ thống. Bây giờ tập tin là trách nhiệm của chương trình.
- Kiểm tra tính toàn vẹn.
- Sử dụng tệp như bộ nhớ ngoài trong khi chương trình đang chạy.
- Viết tất cả các sửa đổi.
- Mở khóa. Bây giờ tập tin là trách nhiệm của người dùng.
Vì OS X thiếu khóa bắt buộc trên toàn hệ thống nên hiện tại tôi không biết phải làm gì cho việc này. Nhưng tôi vẫn tin rằng có một cách để lưu trữ loại tệp toàn vẹn này, điều mà tôi không biết. Và tôi muốn biết mọi người xử lý chuyện này ra sao.
Câu hỏi này không phải về lỗi lập trình của tôi. Đó là một vấn đề khác. Vấn đề hiện tại là bảo vệ dữ liệu từ các chương trình khác không tôn trọng việc khóa tập tin tư vấn. Ngoài ra, người dùng thường là người chủ và chương trình đang chạy với cùng một người dùng, vì vậy đặc quyền tệp Unix tầm thường không hữu ích.
Bạn đã xem xét khả năng ẩn tệp đơn giản mà bạn đang làm việc cho đến khi bạn hoàn thành nó chưa? –
@KenThomases Có vẻ như một giải pháp tốt nếu tôi có thể ẩn hiện đang sử dụng tệp từ các quy trình khác. Bạn có thể cho tôi biết phương pháp cụ thể không? – Eonil