Вход/Регистрация
Linux программирование в примерах
вернуться

Роббинс Арнольд

Шрифт:

Одно поле

struct statfs
заслуживает особого замечания. Это поле
f_type
, указывающее тип файловой системы. Значение является магическим числом файловой системы, извлеченной из суперблока. Справочная страница statfs(2) предоставляет список обычно используемых файловых систем и их магические числа, которые мы используем в
ch08-statfs.c
. (Увы, отдельного файла
#include
нет.)

1 /* ch08-statfs.с --- демонстрация statfs Linux */

2

3 /* ЗАМЕЧАНИЕ: специфично для GNU/Linux! */

4

5 #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>

11

12 /* Определения взяты из справочной страницы для statfs(2): */

13 #define AFFS_SUPER_MAGIC 0xADFF

14 #define EFS_SUPER_MAGIC 0x00414A53

15 #define EXT_SUPER_MAGIC 0x137D

16 #define EXT2_OLD_SUPER_MAGIC 0xEF51

17 #define EXT2_SUPER_MAGIC 0xEF53

18 #define HPFS_SUPER_MAGIC 0xF995E849

19 #define ISOFS_SUPER_MAGIC 0x9660

20 #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 0x4d44

25 #define NCP_SUPER_MAGIC 0x564c

26 #define NFS_SUPER_MAGIC 0x6969

27 #define PROC_SUPER_MAGIC 0x9fa0

28 #define SMB_SUPER_MAGIC 0x517B

29 #define XENIX_SUPER_MAGIC 0x012FF7B4

30 #define SYSV4_SUPER_MAGIC 0x012FF7B5

31 #define SYSV2_SUPER_MAGIC 0x012FF7B6

32 #define COH_SUPER_MAGIC 0x012FF7B7

33 #define UFS_MAGIC 0x00011954

34 #define XFS_SUPER_MAGIC 0x58465342

35 #define _XIAFS_SUPER_MAGIC 0x012FD16D

36

37 void process(const char *filename);

38 void do_statfs(const struct mntent *fs);

39

40 int errors = 0;

41 char *myname;

42

/* ...main без изменений, process почти идентична... */

85

86 /* type2str --- преобразование типа fs в строку из statfs(2) */

87

88 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" },

  • Читать дальше
  • 1
  • ...
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: