Nói chung, hoạt động đĩa "mức thấp" từ các chương trình người dùng trong Linux liên quan đến việc mở thiết bị đĩa đặc biệt. Trên máy tính của tôi, chúng được gọi là các tên như "/ dev/sda" hoặc "/ dev/sda4" hoặc thậm chí "/ dev/disk/by-uuid/2a5150b4-71cb-11e1-b2fe-3b0d270b4e16".
Bạn nên cẩn thận khi chọn tệp thiết bị của mình. Viết vào phân vùng hệ thống của bạn bằng cách sử dụng này không phải là một ý tưởng tốt. Ngoài ra, mở tập tin thiết bị cần truy cập root trong hầu hết các trường hợp (vì lý do rõ ràng).
Câu hỏi về việc sử dụng fstream
có trực giao hay không. Bạn có thể sử dụng std::fstream
, fopen
hoặc thậm chí open
để mở thiết bị. Sau đó sử dụng bất kỳ hoạt động đọc nào khớp với phần mở mà bạn đã làm.
Ví dụ cụ thể của bạn, bạn có thể cân nhắc xem bạn có cần chức năng này không. Trích dẫn Wikipedia, mà lần lượt được trích dẫn Linux System Administrator Guide:
Tuy nhiên, như các hệ thống Linux Quản trị viên Hướng dẫn khẳng định, "Modern Linux hệ thống tập tin (s) giữ phân mảnh ở mức tối thiểu bằng cách giữ cho tất cả các khối trong một tập tin gần nhau thậm chí nếu chúng không thể được lưu trữ trong các sector liên tiếp. Một số hệ thống tập tin, như ext3, phân bổ hiệu quả khối miễn phí gần các khối khác nhất trong một tệp. Do đó không cần phải lo lắng về việc phân mảnh trong hệ thống Linux. "
Kể từ khi bạn đề cập đến C++, tôi giả sử bạn đang viết một chương trình sử dụng và không phải là một thiết bị điều khiển. Các hoạt động đĩa "mức thấp" thực sự chỉ có sẵn bên trong hạt nhân. Nếu bạn, trên thực tế, muốn viết một trình điều khiển thiết bị, vui lòng đặt lại câu hỏi của bạn để làm rõ điều đó.
Nguồn
2012-11-26 19:27:49
Rất nhiều thứ ở đây cũng vậy: http://bit.ly/V2ruze – soulseekah