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

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

Шрифт:

24 switch (c) {

25 case 'f':

26 file = optarg;

27 break;

28 default:

29 fprintf(stderr, "usage: %s [-f fstab-file]\n", argv[0]);

30 exit(1);

31 }

32 }

33

34 process(file);

35 return 0;

36 }

37

38 /* process --- прочесть структуры struct mntent из файла */

39

40 void process(const char *filename)

41 {

42 FILE *fp;

43 struct mntent *fs;

44

45 fp = setmntent(filename, "r"); /* только для чтения */

46 if (fp == NULL) {

47 fprintf(stderr, "%s: %s: could not open: %s\n",

48 myname, filename, strerror(errno));

49 exit(1);

50 }

51

52 while ((fs = getmntent(fp)) != NULL)

53 print_mount(fs);

54

55 endmntent(fp);

56 }

57

58 /* print_mount --- вывод одного смонтированного элемента */

59

60 void print_mount(const struct mntent *fs)

61 {

62 printf("%s %s %s %s %d %d\n",

63 fs->mnt_fsname,

64 fs->mnt_dir,

65 fs->mnt_type,

66 fs->mnt_opts,

67 fs->mnt_freq,

68 fs->mnt_passno);

69 }

В отличие от большинства программ, которые мы до сих пор видели, эта специфична для Linux. Во многих Unix-системах есть схожие процедуры, но их идентичность не гарантируется.

По умолчанию,

ch08-mounted
читает
/etc/mtab
, выводя сведения о каждой смонтированной файловой системе. Опция
– f
позволяет указать другой файл для чтения, такой, как
/proc/mounts
или даже
/etc/fstab
.

Функция

main
обрабатывает командную строку (строки 23–32) и вызывает для указанного файла
process
. (Эта программа следует нашему стандартному шаблону.)

process
, в свою очередь, открывает файл (строка 45) и проходит в цикле через каждую возвращённую файловую систему (строки 52–53). После завершения она закрывает файл (строка 55).

Функция

print_mount
выводит информацию из
struct mnent
. Вывод во многом напоминает вывод '
cat /etc/mtab
':

$ ch08-mounted /* Запуск программы */

/dev/hda2 / ext3 rw 0 0

none /proc proc rw 0 0

usbdevfs /proc/bus/usb usbdevfs rw 0 0

/dev/hda5 /d ext3 rw 0 0

none /dev/pts devpts rw,gid=5,mode=620 0 0

none /dev/shm tmpfs rw 0 0

none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0

/dev/hda1 /win vfat rw,noexec,nosuid,nodev,uid=2076,gid=10,user=arnold 0 0

8.3. Получение сведений о файловой системе

Вывод сведений о файловой системе, рассмотренный ранее — это хорошо и замечательно, но это не захватывает. Раз мы знаем, что определенная точка монтирования представляет файловую систему, нам нужны сведения о файловой системе. Это даст нам возможность выводить вещи наподобие сведений, полученных с помощью

df
и '
df -i
'.

$ df /* Показать свободное/используемое пространство */

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/hda2 6198436 4940316 943248 84% /

/dev/hda5 61431520 27618536 30692360 48% /d

none 256616 0 256616 0% /dev/shm

/dev/hda1 8369532 2784700 5584832 34% /win

$ df -i /* Показать свободные/используемые индексы */

  • Читать дальше
  • 1
  • ...
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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