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

私は自分の質問に答えています。私が望むことをするために、この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);

おすすめ記事