我试图编写一个程序作为概念证明,以便从我的 HDD 中删除 GPT 分区表。为了在打开磁盘后缩短它,我执行以下操作:
//Removes the first partition table in the beginning of the disk
::lseek(fd, 0, SEEK_SET);
::write(fd, '\0', GPT_PARTITION_TABLE_SIZE);
//Removes the backup partition in the end of the disk
::lseek(fd, -GPT_PARTITION_TABLE_SIZE, SEEK_END);
::write(fd, '\0', GPT_PARTITION_TABLE_SIZE);
尽管这似乎运作良好,但我从朋友那里得到消息说这种方式不正确,我应该使用本地缓冲区进行写入,并且我的代码尝试使用 NULL 作为指向 write() 的指针,这是不正确的方法。
我花了好几个小时来理解他的意思,但我仍然不确定我是否明白。有没有人尝试过类似的东西?