我正在使用OSX Yosemite。我最近通过编写一个C程序来清理硬盘,该程序将字符打印到磁盘上的一个巨大文件中。我删除了文件,现在我想尝试读取写入的磁盘扇区。我们面临的挑战是尝试访问不再分配的磁盘。
问题:如何在C中访问未分配的磁盘空间区域?
例如,以下内容无法访问磁盘。它会因f == NULL
而退出:
#include <stdio.h>
#include <stdlib.h>
#define N 1000
int main(void)
{
FILE * f = fopen("/dev/disk3s1", "r");
char c[N];
unsigned int numread = 0;
if(f == NULL)
{
fprintf(stderr, "ERROR!!! f did not open\n");
exit(EXIT_FAILURE);
}
numread = fread(c, sizeof(char), N, f);
printf("numread = %u\n", numread);
printf("%s", c);
return 0;
}