在C中访问未分配的硬盘扇区

时间:2016-02-02 12:59:23

标签: c macos hard-drive diskspace

我正在使用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;
}

0 个答案:

没有答案