Я собираюсь получить растровые изображения inode Linux с помощью C++. Я использую этот код, чтобы сначала получить суперблок:
#include <cstdlib>
#include <linux/ext2_fs.h>
#include <linux/fs.h>
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <fcntl.h>
#include <linux/fs.h>
using namespace std;
/*
*
*/
int main() {
int fd;
char boot[1024];
struct ext2_super_block super_block;
fd = open("/dev/sda1", O_RDONLY);
/* Reads the boot section and the superblock */
read(fd, boot, 1024);
read(fd, &super_block, sizeof (struct ext2_super_block));
/* Prints the Magic Number */
printf("%x\n", super_block.s_magic);
close(fd);
return 0;
}
но каждый раз, когда я запускаю его, я получаю сообщение об ошибке:
In file included from main.cpp:2:0:
/usr/include/linux/ext2_fs.h:181:18: error: ‘S_ISDIR’ was not declared in this scope
/usr/include/linux/ext2_fs.h:183:23: error: ‘S_ISREG’ was not declared in this scope
Я не смог найти хороший пример или учебник для этого. Кто-нибудь может мне помочь?
РЕДАКТИРОВАТЬ:
Я включил <linux/stat.h>
, но все равно получаю ту же ошибку.