一般に、Linuxのユーザプログラムからの "ローレベル"ディスク操作には、ディスク特殊デバイスを開く必要があります。私のコンピュータでは、これらは "/ dev/sda"や "/ dev/sda4"や "/ dev/disk/by-uuid/2a5150b4-71cb-11e1-b2fe-3b0d270b4e16"のような名前です。
デバイスファイルの選択には細心の注意が必要です。これを使ってシステムパーティションに書き込むことは良い考えではありません。また、デバイスファイルを開くには、ほとんどの場合、ルートアクセスが必要です(明白な理由から)。
fstream
を使用するかどうかの問題は直交しています。 std::fstream
、fopen
、またはopen
を使用してデバイスを開くことができます。次に、あなたが行ったオープンに一致する読み取り操作を使用します。
具体的な例として、この機能が必要かどうか再考することがあります。今度はLinux System Administrator Guideを引用され、Wikipediaを引用:
しかし、Linuxのシステム管理者ガイドは、近代的なLinuxファイルシステム(s)が近くに一緒にファイル内のすべてのブロックを保つことによって最小限に断片化を維持する」、と述べてext3のようなファイルシステムの中には、ファイル内の他のブロックに最も近い空きブロックを効果的に割り当てるものがあるため、Linuxシステムでの断片化を心配する必要はありません。
あなたがC++に言及しているので、私はあなたがユーザプログラムではなく、デバイスドライバを書いていると仮定します。本当に「低レベル」のディスク操作は、カーネル内でのみ使用できます。実際に、デバイスドライバを書いてみたいと思っているなら、それを明確にするためにあなたの質問を再提示してください。
http://bit.ly/V2ruze – soulseekah