[<<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