Доброго времени суток!
Помогите разрешить проблему
#include <stdio.h>
#include <dirent.h>
#include <mntent.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main() {
FILE *mountsFile = setmntent("/proc/mounts", "r");
DIR *dir;
struct dirent *entry;
struct stat file_stat;
long long max_size = 0;
char max_filename[256];
struct mntent *mntEntry;
while ((mntEntry = getmntent(mountsFile)) != NULL) {
if (strcmp(mntEntry->mnt_type, "ext4") == 0) {
printf("Device: %s\n", mntEntry->mnt_fsname);
printf("Mount Point: %s\n\n", mntEntry->mnt_dir);
dir = opendir(mntEntry->mnt_dir);
if (dir == NULL) {
perror("Ошибка открытия директории");
return -1;
}
while ((entry = readdir(dir)) != NULL) {
char filename[256];
strcpy(filename, "mntEntry->mnt_dir"); // должен стоять символ "/" в конце пути, не пойму как добавить
strcat(filename, entry->d_name);
if (stat(filename, &file_stat) == -1) {
perror("Ошибка выполнения stat для файла");
closedir(dir);
return -1;
}
if (S_ISREG(file_stat.st_mode) && file_stat.st_size > max_size) {
max_size = file_stat.st_size;
strcpy(max_filename, filename);
}
}
}
}
printf("Самый большой файл: %s, размер: %lld байт\n", max_filename, max_size);
endmntent(mountsFile);
closedir(dir);
return 0;
}
]# g++ allfind.cpp -o all
]# ./all
Device: /dev/sdb1
Mount Point: /opt/disk
Ошибка выполнения stat для файла: No such file or directory