[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Печать состояния файла - Пример

Эта программа печатает информацию о состоянии файла. Распечатываются
все поля структуры stat, полученной с использованием stat(2).
Программа работает следующим образом:
13   Объявление структуры stat.
15-18     Первый аргумент - имя файла. Второй аргумент - адрес
структуры stat. Система заполняет структуру информацией о файле.
19-20     Печатаются имя файла и inode-номер.
21   Функция prntmode() печатает информацию из моды файла. Текст этой
функции приведен дальше в этом разделе.
22-23     Печатаются число директорных связей и размер файла.
24-25     Эти функции печатают идентификатор пользователя и различные
временные отметки файла. Тексты этих функций приведены дальше в этом
разделе.
Эта программа демонстрируется на выполняемом файле и директории
следующим образом:
$ stat stat # executable file
file name: stat         i-number: 6028
regular file    permissions: 755
links: 1        file size: 24899
user ID: 49026 name: jrs        group ID: 46014 group: ustg
last access:            Tue Dec 17 11:49:42 1989
last modification:      Tue Dec 17 10:19:45 1989
last status change:     Tue Dec 17 10:19:45 1989
$ stat /etc # directory
file name: /etc         i-number: 1258
directory       permissions: 775
links: 6        file size: 3024
user ID: 0 name: root   group ID: 3 group: sys
last access:            Tue Dec 17 02:30:16 1989
last modification:      Tue Dec 17 10:25:33 1989
last status change:     Tue Dec 17 10:25:33 1989

Файл: stat.c
                   ПЕЧАТЬ СОСТОЯНИЯ ФАЙЛА - ПРИМЕР

 1 #include <stdio.h>
 2 #include <sys/types.h>
 3 #include <stdlib.h>
 4 #include <sys/stat.h>
 5 static void prntuser(struct stat *);
 6 static void prntimes(struct stat *);
 7 static void prntmode(struct stat *);
 8
 9 /* print the status of a file */
10
11 main(int argc, char *argv[])
12 {
13     struct stat stbuf;
14
15     if (stat(argv[1], &stbuf) == -1) {
16         perror(argv[1]);
17         exit(1);
18     }
19     printf("file name: %s\t\t", argv[1]);
20     printf("i-number: %lu\n", stbuf.st_ino);
21     prntmode(&stbuf);
22     printf("links: %lu\t", stbuf.st_nlink);
23     printf("file size: %ld\n", stbuf.st_size);
24     prntuser(&stbuf);
25     prntimes(&stbuf);
26
27     exit(0);
28 }
29