Tôi có một tác vụ chạy dài thực hiện một loạt các thao tác tệp trên các ổ đĩa USB được gắn và tôi muốn ngăn người dùng đẩy ổ đĩa khỏi Trình tìm kiếm (hoặc ở nơi khác) trong khi điều này xảy ra. Có nút Hủy cho phép tác vụ được kết thúc bất kỳ lúc nào.Làm thế nào tôi có thể ngăn chặn việc đẩy đĩa ra trong một thao tác trên Mac OS X?
Tôi đã giả định rằng việc giữ một tệp xử lý mở trên ổ đĩa được gắn trong suốt thời gian thực hiện tác vụ sẽ thực hiện thủ thuật, nhưng nó không hoạt động.
Đây là những gì tôi đã cố gắng (lỗi xử lý loại bỏ):
NSString *tempFilePath = @"/Volumes/myVolume/.myTempFile";
if ([[NSFileManager defaultManager] fileExistsAtPath:tempFilePath] == NO) {
[[NSFileManager defaultManager] createFileAtPath:tempFilePath contents:nil attributes:nil]
}
_tempFile = [NSFileHandle fileHandleForWritingAtPath:tempFilePath];
Bất kỳ ý tưởng về những gì tôi có thể làm gì để đảm bảo rằng khối lượng bị ngăn cản ejecting?
Không muốn phá vỡ bong bóng của bạn, nhưng nếu ai đó chỉ rút ổ USB của họ ra sao? Nếu ổ đĩa là phần cứng điều khiển thì không thể ngăn nó bị đẩy ra. Tại sao bạn không thể cung cấp cho người dùng một cảnh báo rất nghiêm khắc rằng họ không nên đẩy ổ đĩa ra hoặc hoạt động khác sẽ thất bại? –
Tôi nhận ra rằng chúng tôi không thể ngăn chặn hoàn toàn việc ngắt kết nối vô tình. Càng nhiều càng tốt, tôi muốn người dùng bị ép buộc vào quyết định có ý thức ngừng hoạt động để họ có thể hiểu tại sao một số chức năng không hoạt động cho họ sau này. – mcsheffrey
@ferrari fan: những gì mcsheffrey muốn là hữu ích bởi vì người dùng có thể quên rằng nhiệm vụ này không được hoàn thành và "giữ lại" đĩa theo cách nào đó sẽ giúp đỡ với các trường hợp ngẫu nhiên. – mohsenr