我想直接从C程序访问整个硬盘.它上面没有FS,永远不会是一个.
我只想打开/ dev/sda(例如)并在磁盘的块/扇区级别执行I/O.
我打算在Linux环境中编写一些用于学习C编程的程序(我知道C语言,Python,Perl和Java),但对Linux环境缺乏信心.
为了我的学习目的,我正在考虑使用kyoto-cabinet并将与计算的哈希相对应的值直接保存到硬盘的"块/扇区"中,记录该对:"哈希,块/扇区引用"到一个京都柜哈希数据库文件.
我不知道使用标准CI/O功能是否可行,否则我不得不写一个"设备驱动程序"或类似...
我需要获得更好的批量写入性能,这是通过将分区和格式化的SSD设备与ext4文件系统一起使用来实现的。当我用dd命令进行基准测试时,我得到了20%的改进
time dd if=/dev/zero of=/dev/sdb count=1024 bs=1048576
Run Code Online (Sandbox Code Playgroud)
相比于
time dd if=/dev/zero of=/mnt/test.img count=1024 bs=1048576 && sync
Run Code Online (Sandbox Code Playgroud)
/ mnt是我挂载的/ dev / sda1。
假设硬盘专用于我的应用程序并且可以为其设置权限,是否可以仅从C ++应用程序中打开/ dev / sda并将其用作普通文件?我的意思是,从头开始写入数据,然后再次打开并读取:
ofstream myfile;
myfile.open ("/dev/sda");
myfile << "Writing this to a file.\n";
myfile.close();
Run Code Online (Sandbox Code Playgroud)
然后以相同的精神重新打开并阅读。如果不清楚我写的结尾在哪里,我可以自己写数据标记的结尾。
我认为是的,因为它的行为类似于文件。但是,我想检查一下是否没有重大的隐藏问题。