libblkid 库:有什么方法可以将它与核心内存中的块一起使用吗?

libblkid 库:有什么方法可以将它与核心内存中的块一起使用吗?

我知道如何使用该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

我正在回答我自己的问题。我能够使用libblkidmkstemp函数中的几个函数来完成我想做的事情。该函数创建并打开一个临时文件(实际上是在内存中)。我们需要将块写入该文件,然后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);

相关内容