相关疑难解决方法(0)

从Linux上的C程序直接访问没有FS的硬盘

我想直接从C程序访问整个硬盘.它上面没有FS,永远不会是一个.

我只想打开/ dev/sda(例如)并在磁盘的块/扇区级别执行I/O.

我打算在Linux环境中编写一些用于学习C编程的程序(我知道C语言,Python,Perl和Java),但对Linux环境缺乏信心.

为了我的学习目的,我正在考虑使用kyoto-cabinet并将与计算的哈希相对应的值直接保存到硬盘的"块/扇区"中,记录该对:"哈希,块/扇区引用"到一个京都柜哈希数据库文件.

我不知道使用标准CI/O功能是否可行,否则我不得不写一个"设备驱动程序"或类似...

c linux hard-drive

24
推荐指数
3
解决办法
1万
查看次数

从磁盘读取单个扇区

我试图直接从磁盘读取一个特定的扇区.我目前已经没有想法了,任何有关如何去做的建议都会很棒!

linux io kernel

6
推荐指数
1
解决办法
1万
查看次数

我可以将/ dev / sda用作普通的顺序文件吗?

我需要获得更好的批量写入性能,这是通过将分区和格式化的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)

然后以相同的精神重新打开并阅读。如果不清楚我写的结尾在哪里,我可以自己写数据标记的结尾。

我认为是的,因为它的行为类似于文件。但是,我想检查一下是否没有重大的隐藏问题。

c++ linux

3
推荐指数
1
解决办法
250
查看次数

标签 统计

linux ×3

c ×1

c++ ×1

hard-drive ×1

io ×1

kernel ×1