系统:VM Ubuntu
实现Linux系统下通过输入指定路径查看文件系统类型,MSDOS_SUPER_MAGIC,NTFS_SUPER_MAGIC和EXT4_SUPER_MAGIC这些宏定义并不是在sys/mount.h中定义的,它们实际上是在linux/magic.h头文件中定义的。不同系统下宏定义可能不一样,可以直接通过数值查看,比如:
if (fs.f_type == 0x4d44) {
fstype = "FAT";
}
输入指定路径
代码如下:
#include <stdio.h>
#include <sys/vfs.h>
#include <linux/magic.h>
int main(int argc,char *argv[])
{
struct statfs fs;
//const char *path = "/mnt/usb"; // 替换为你实际的U盘挂载路径
const char *path = argv[1];
printf("path: %s\n",argv[1]);
if (statfs(path, &fs) == -1) {
perror("Failed to statfs");
return 1;
}
const char *fstype;
if (fs.f_type == MSDOS_SUPER_MAGIC) {
fstype = "FAT";
} else if (fs.f_type == AFS_FS_MAGIC) {
fstype = "NTFS";
} else if (fs.f_type == EXT4_SUPER_MAGIC) {
fstype = "ext4";
} else {
fstype = "Unknown";
}
printf("File system type: %s\n", fstype);
return 0;
}
生成执行文件:
gcc -o get_fs_type get_fs_type.c