我正在尝试使用open(2)
,lssek[64](2)
和write(2)
编写一个可用空间归零器。我正在尝试确定正在使用的磁盘扇区。
我从coreutils看了一下dd(1)
,但该实用程序没有执行类似的检查。在Windows世界中,我可以拨打DeviceIoControl with FSCTL_GET_VOLUME_BITMAP。
鉴于原始扇区,系统调用是否允许我确定扇区是否正在使用?
答案 0 :(得分:3)
这是完成的传统方式(因为你的方法受文件系统损坏的竞争条件),就是创建一个巨大的文件,将其归零,然后删除该文件。事实上,你可以直接用sh做,不需要文件:
# dd will run until disk space is exhausted
dd if=/dev/zero of=__somefile.bin bs=1M conv=noerror; rm __somefile.bin