C 언어를 사용하여 ext2 이미지 내에서 특정 inode (번호 사용)에 싶습니다. open() 시스템 콜에서 ext2 이미지를 열고, inode에 도달 할 때까지 lseek()를 올바른 오프셋으로 사용하여 트래버스합니다. 이 올바른지? 아니면 내가 잘못하고있는거야? 나는 open()을 사용하는 것이 옳은가, 아니면 이것을하기 위해 더 적절한 함수가 있는지 조금 혼란 스럽다. 나는 아이 노드에 도달 할 때까지특정 inode를 ext2 이미지로 가져 오기 (C)
int fd = open("ext2fs.img", O_RDONLY);
assert(fd != -1);
off_t startPosition = lseek(fd, 0, SEEK_CUR);
assert(startPosition != -1);
난 그냥 startPosition입니다에 오프셋을 추가해야 하는가? 하지만 특정 inode를 검색하려면 어떻게해야합니까? 업데이트]
내가 이미 ext2 파일 시스템 (http://www.nongnu.org/ext2-doc/ext2.html)의 레이아웃을
(구체적으로)이 나에게 내가 필요로하는 중요한 모든 (모든 오프셋)를 제공합니다. 그리고 메타 데이터와 데이터를 조작하기위한 C 프로그램을 만들어야합니다. 파일을 제거하고 복사하는 것과 같습니다.
나는 무엇을해야할지 알고 있지만, 구현하는 데 문제가 있습니다.
예를 들어 :
#define SUPER_BLOCK 1024
int main()
{
int freeInodes;
int fd = open("path.img", O_RDONLY);
off_t startPosition = lseek(fd, 0, SEEK_CUR);
lseek(fd, startPosition + SUPER_BLOCK + 16, SEEK_CUR);
read(fd, freeInodes, 4);
printf("Number of free inodes: %d", freeInodes);
}
출력 : 내가 뭘하는지 알고 있다면 테스트하려면, 내가이 일을 내 교수가 제공 한 EXT2 디스크 이미지 무료 아이 노드의 수를 읽으려고 해요 수신 : "무료 inode 수 : 32767"
내가 read()에서 얻은 데이터를 올바르게 해석합니까? 나는이 값이 정확한지 잘 모른다.
그게 정확히 내가하려는거야! 나는 이미 ext2 파일 시스템 (http://www.nongnu.org/ext2-doc/ext2.html)의 레이아웃을 가지고있다. 이것은 내가 필요한 모든 것을 (모든 오프셋) 제공한다. 그리고 메타 데이터와 데이터를 조작하기위한 C 프로그램을 만들어야합니다. 나는 무엇을해야할지 이미 알고 있지만 구현하는 데 문제가 있습니다. 원래 게시물을 업데이트 할 것입니다. –