我知道如何使用该libblkid
库来分析现有的块设备。我想用它来分析内存范围前我将它写入块设备。像这样的东西:
char block[4096];
... writing into the block
blkid_probe pr = blkid_new_probe_from_address(block);
... calling usual libblkid function on the pr
当然,blkid_new_probe_from_address
不存在——有没有办法使用现有函数来创建这种函数libblkid
,而不需要深入了解这个库的核心?
或者,也许其他一些工具包可以实现这一目标?
答案1
我正在回答我自己的问题。我能够使用libblkid
该mkstemp
函数中的几个函数来完成我想做的事情。该函数创建并打开一个临时文件(实际上是在内存中)。我们需要将块写入该文件,然后blkid_probe_set_device
使用该文件的文件描述符调用该函数。看起来图书馆很乐意使用这个人造文件。代码如下(为了简单起见,我省略了所有错误检查):
char block[4096];
...
char filename[] = "/tmp/fileXXXXXX";
const int fd = mkstemp(filename);
write(fd, block, sizeof(block));
...
blkid_probe pr = blkid_new_probe();
blkid_probe_set_device(pr, fd, 0, 0);
...
... (analysis using various libblkid functions)
...
close(fd);
unlink(filename);