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);