ハードディスクをフォーマットするプログラムを作成しようとしていますが、検索して見つけたフォーマットのコードに行き詰まっていますが、SHFormatDrive()
機能がwin xp以降でサポートされていることがわかり、使用する場所が見つかりませんでしたそれは助けになります!
3492 次
2 に答える
9
UNIX でこのようなことを行う一般的な方法は、ライブラリ呼び出し system(const char*) を使用して、コマンド ライン ユーティリティを呼び出して実行することです。
もちろん、適切な権限などが必要です。
もう 1 つの方法は、もちろん、オープン ソースのフォーマット コード (mkfs.ext3 など) を見つけてプロジェクトに追加することです (もちろん、ライセンス要件に従います)。
于 2012-09-09T17:27:32.193 に答える
4
ハード ドライブのファイル システムを破壊する (アンフォーマットする) だけの場合は、単にハード ドライブ デバイス ファイルを書き込み用に開き、ゼロの書き込みを開始できます。
#include <stdio.h>
int main() {
char buf[8192];
FILE *f = fopen("/dev/sda", "w");
if(f == NULL) {
perror("Could not open file for writing");
return;
}
long unsigned int written = 0;
while(true) {
unsigned count = fwrite(buf, sizeof(buf), 1, f);
written += count;
if(count != sizeof(buf) {
perror("Could not write file");
break;
};
}
fclose(f);
printf("Bytes written: %lu\n", written);
}
注: ルート ファイル システム/コンピューターが使用できなくなる可能性があるため、何をしているのか本当にわかっている場合にのみ、このコードを変更されていないバージョンで使用してください。
ext4 や btrfs などのファイル システムで実際にフォーマットしたい場合は、それらのファイル システム固有のライブラリを確認する必要があります。mkfs.btrfs または mkfs.ext4 ユーティリティのソース コードを読むことから始めるのが最善ですが、その作業は確かに簡単ではありません。
于 2012-09-09T20:10:35.780 に答える