Я передаю файл или каталог моей Unix C программе и хочу определить, к какой файловой системе она принадлежит и каков ее размер. Я пытался использовать getmntent()
из mntent.h
и некоторые функции из fstab.h
, но безуспешно. Есть ли какой-нибудь способ сделать это вообще?
Редактировать: Я имел в виду, не случайно, что, например, при использовании getmntent()
поле mnt_type было пустым. Я использовал это так:
struct mntent* storage = getmntent(fopen(argv[1], "r"));
if(storage) printf("File system type: %s\n", storage->mnt_type);
и с помощью fstab.h
всегда возвращал NULL.
РЕДАКТИРОВАТЬ 2:
struct statvfs* statisticVfs = malloc(sizeof(struct statvfs));
rtrn = statvfs(argv[1], statisticVfs);
if(rtrn != -1)
{
printf("Block size: %lu\n", statisticVfs->f_bsize);
FILE* myFile = fopen(argv[1], "r");
if(myFile) puts("Opened!");
struct mntent* storage = getmntent(myFile);
if(storage) printf("Type: %s\n", storage->mnt_type);
}
else puts("Error when using statvfs!");