Читать книгу 📗 "Linux программирование в примерах - Роббинс Арнольд"
Есть два неудобства в использовании этих вызовов. Во-первых, они специфичны для Linux. Во-вторых, часть сведений из
struct statvfsstruct statfsf_flagf_favailstatvfs()/etc/mtabstruct statvfsОдно поле
struct statfsf_typech08-statfs.c#include1 /* ch08-statfs.с --- демонстрация statfs Linux */23 /* ЗАМЕЧАНИЕ: специфично для GNU/Linux! */45 #include <stdio.h>6 #include <errno.h>7 #include <mntent.h> /* для getmntent() и др. */8 #include <unistd.h> /* для getopt() */9 #include <sys/types.h>10 #include <sys/vfs.h>1112 /* Определения взяты из справочной страницы для statfs(2): */13 #define AFFS_SUPER_MAGIC 0xADFF14 #define EFS_SUPER_MAGIC 0x00414A5315 #define EXT_SUPER_MAGIC 0x137D16 #define EXT2_OLD_SUPER_MAGIC 0xEF5117 #define EXT2_SUPER_MAGIC 0xEF5318 #define HPFS_SUPER_MAGIC 0xF995E84919 #define ISOFS_SUPER_MAGIC 0x966020 #define MINIX_SUPER_MAGIC 0x137F /* оригинальный minix */21 #define MINIX_SUPER_MAGIC2 0x138F /* 30-симв. minix */22 #define MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */23 #define MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, имена 30 симв. */24 #define MSDOS_SUPER_MAGIC 0x4d4425 #define NCP_SUPER_MAGIC 0x564c26 #define NFS_SUPER_MAGIC 0x696927 #define PROC_SUPER_MAGIC 0x9fa028 #define SMB_SUPER_MAGIC 0x517B29 #define XENIX_SUPER_MAGIC 0x012FF7B430 #define SYSV4_SUPER_MAGIC 0x012FF7B531 #define SYSV2_SUPER_MAGIC 0x012FF7B632 #define COH_SUPER_MAGIC 0x012FF7B733 #define UFS_MAGIC 0x0001195434 #define XFS_SUPER_MAGIC 0x5846534235 #define _XIAFS_SUPER_MAGIC 0x012FD16D3637 void process(const char *filename);38 void do_statfs(const struct mntent *fs);3940 int errors = 0;41 char *myname;42 /* ...main() без изменений, process() почти идентична... */8586 /* type2str --- преобразование типа fs в строку из statfs(2) */8788 const char *type2str(long type)89 {90 static struct fsname {91 long type;92 const char *name;93 } table[] = {94 { AFFS_SUPER_MAGIC, "AFFS" },95 { COH_SUPER_MAGIC, "COH" },96 { EXT2_OLD_SUPER_MAGIC, "OLD EXT2" },97 { EXT2_SUPER_MAGIС, "EXT2" },98 { HPFS_SUPER_MAGIC, "HPFS" },99 { ISOFS_SUPER_MAGIC, "ISOFS" },100 { MINIX2_SUPER_MAGIC, "MINIX V2" },101 { MINIX2_SUPER_MAGIC2, "MINIX V2 30 char" },102 { MINIX_SUPER_MAGIC, "MINIX" },103 { MINIX_SUPER_MAGIC2, "MINIX 30 char" },104 { MSDOS_SUPER_MAGIC, "MSDOS" },105 { NCP_SUPER_MAGIС, "NCP" },106 { NFS_SUPER_MAGIC, "NFS" },107 { PROC_SUPER_MAGIC, "PROC" },108 { SMB_SUPER_MAGIC, "SMB" },109 { SYSV2_SUPER_MAGIC, "SYSV2" },110 { SYSV4_SUPER_MAGIC, "SYSV4" },111 { UFS_MAGIC, "UFS" },112 { XENIX_SUPER_MAGIC, "XENIX" },113 { _XIAFS_SUPER_MAGIC, "XIAFS" },114 { 0, NULL },115 };116 static char unknown[100];117 int i;118