Получить атрибуты файла с помощью функции stat и сохранить их в определяемой пользователем структуре данных - PullRequest
0 голосов
/ 07 июля 2019

Мне нужна помощь с этим проектом. Ниже приводится текст проекта:

Разработка системного приложения Unix / Linux под названием filestat, способного отслеживать набор файлов, собирающих информацию о: размере (в байтах); разрешения; последний доступ к файлу; дата последнего изменения файла; дата последнего изменения разрешений; количество ссылок на файл; владелец; группа.

Синопсис программы: filestat [options] [input] [output].

Input - это входной файл, в котором определены параметры выполнения программы, если не указан, используется файл filestat.in; Выход - это выходной файл, в который собираются собранные данные, если он не указан, используется файл filestat.db. Информация в выходном файле обновляется при каждом запуске программы (и не перезаписывается).

Возможные [option]:

–Verbose | -v: во время выполнения программа отображает на экране информацию об обработанных файлах и собранных данных;

–Stat | -s: на стандартном выводе отображается следующая статистика: количество отслеживаемых файлов; количество ссылок; номер каталога; общий размер; средний размер; максимальный размер; минимальный размер (в байтах).

–Report | -r: в конце выполнения на стандартный вывод выводится информация о количестве обработанных файлов, времени обработки, максимальном размере файла;

–History | -h <filepah>: вывести на стандартный вывод хронологию информации о файле;

–User | -u <userId>: выводит информацию обо всех принадлежащих файлах на стандартный вывод

–Group | -g <groupId>: печатать информацию обо всех файлах, принадлежащих стандартному выводу;

–Length | -l <min>:: выводить на экран информацию обо всех файлах размером (в байтах) между и (: обозначает каждый файл размером не более ,: и указывать каждый файл не менее

–Noscan: если эта опция присутствует, данные не собираются, а отображается только информация, присутствующая в выходном файле.

Формат входного файла: [r] [l]. Где r указывает, что файлы должны быть рекурсивно прочитаны в нижележащих каталогах (применяя те же параметры), а l указывает, что ссылки должны рассматриваться как обычные файлы / каталоги, в этом случае собранная информация относится к файлу, указанному ссылкой и не связывать одно и то же.

Формат выходного файла:

# <path1>
<data1> <uid1> <gid1> <dim1> <perm1> <acc1> <change1> <mod1> <nlink1>
...
<data_n> <uid_n> <gid_n> <dim_n> <perm_n> <acc_n> <change_n> <mod_n> 
<nlink_n>
###
# <path2>
<data1> <uid1> <gid1> <dim1> <perm1> <acc1> <change1> <mod1> <nlink1>
...
<data_n> <uid_n> <gid_n> <dim_n> <perm_n> <acc_n> <change_n> <mod_n> 
<nlink_n>
###
...
# <pathm>
<data1> <uid1> <gid1> <dim1> <perm1> <acc1> <change1> <mod1> <nlink1>
...
<data_n> <uid_n> <gid_n> <dim_n> <perm_n> <acc_n> <change_n> <mod_n> 
<nlink_n>
###
###

Информация, связанная с файлом / каталогом, начинается со строки: # <path>

Затем следует последовательность строк (по одной на каждый выполненный анализ) вида:

<data> <uid> <gid> <dim> <perm> <acc> <change> <mod> <nlink>

Где это:

<data> указывает дату и время получения информации;

<uid> - идентификатор пользователя, владеющего файлом;

<gid> - идентификатор группы файлов;

<perm> - строка с правами доступа к файлу;

<acc> дата последнего доступа;

<change> дата последнего изменения;

<mod> дата последнего изменения разрешений;

<nlink> количество ссылок на файл.

Информация заканчивается строкой: ###

Файл заканчивается строкой: ###

Я новичок в программировании на C и ищу советы о том, как мне двигаться. Извините, если вопрос был написан неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...