СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
1. Свободная энциклопедия «Википедия»
2. Русскоязычные руководства Linux
3. http://www.linuxcenter.ru/
Приложение 1
Флаги режима доступа к файлу
Таблица 1
Флаги общего режима
Флаг | Восьмеричное представление | RWX-представление |
S_IRWXU | 00700 | rwx --- --- |
S_IRUSR | 00400 | r-- --- --- |
S_IREAD | 00400 | r-- --- --- |
S_IWUSR | 00200 | -w- --- --- |
S_IWRITE | 00200 | -w- --- --- |
S_IXUSR | 00100 | --x --- --- |
S_IEXEC | 00100 | --x --- --- |
S_IRWXG | 00070 | --- rwx --- |
S_IRGRP | 00040 | --- r-- --- |
S_IWGRP | 00020 | --- -w- --- |
S_IXGRP | 00010 | --- --x --- |
S_IRWXO | 00007 | --- --- rwx |
S_IROTH | 00004 | --- --- r-- |
S_IWOTH | 00002 | --- --- -w- |
S_IXOTH | 00001 | --- --- --x |
Таблица 2
Флаги расширенного режима
Флаг | Восьмеричное представление | Описание |
S_IFMT | 0170000 | Двоичная маска определения типа файла (побитовое ИЛИ всех следующих ниже флагов) |
S_IFDIR | 0040000 | Каталог |
S_IFCHR | 0020000 | Символьное устройство |
S_IFBLK | 0060000 | Блочное устройство |
S_IFREG | 0100000 | Обычный файл |
S_IFIFO | 0010000 | Канал FIFO |
S_IFLNK | 0120000 | Символическая ссылка |
Продолжение приложения 1
Таблица 3
Дополнительные флаги
Флаг | Восьмеричное представление | Описание |
S_ISUID | 0004000 | Бит SETUID |
S_ISGID | 0002000 | Бит SETGID |
S_ISVTX | 0001000 | Липкий (sticky) бит |
|
|
Таблица 4
Флаги режима открытия файла
Флаг | Описание |
О_RDONLY | Только чтение (0) |
О_WRONLY | Только запись (1) |
О_RDWR | Чтение и запись(2) |
О_CREAT | Создать файл, если не существует |
O_TRUNC | Стереть файл, если существует |
О_APPEND | Дописывать в конец |
О_EХCL | Выдать ошибку, если файл существует при использовании OCREAT |
О_DSYNC | Принудительная синхронизация записи |
О_RSYNC | Принудительная синхронизация перед чтением |
О_SYNC | Принудительная полная синхронизация записи |
O_MONBLOCK | Открыть файл в неблокируемом режиме, если это возможно |
О_NDELAY | То же, что и O_NONBLOCK |
O_NOCTTY | Если открываемый файл - терминальное устройство, нe делать его управляющим терминалом процесса |
О_NOFOLLOW | Выдать ошибку, если открываемый файл является символической ссылкой |
О_DIRECTORY | Выдать ошибку, если открываемый файл не является каталогом |
О_DIRECT | Попытаться минимизировать кэширование чтения/записи файла |
О_ASYNC | Генерировать сигнал, когда появляется возможность чтения или записи в файл |
Приложение 2
Заголовочные файлы
В данном приложении содержится информация по заголовочным файлам наших процедур. Прежде всего опишем, что такое заголовочные файлы.
|
|
Заголовочный файл (иногда головной файл, англ. header file),
или подключаемый файл — в языках программирования Си и C++ файл, содержащий определения типов данных, структуры, прототипы функций, перечисления, макросы препроцессора. Имеет по умолчанию расширение .h; иногда для заголовочных файлов языка C++ используют расширение .hрр. Заголовочный файл используется путём включения его текста в данный файл директивой препроцессора # include. Чтобы избежать повторного включения одного и того же кода, используются директивы # ifndef , # define , # endif .
Заголовочный файл в общем случае может содержать любые конструкции языка программирования, но на практике исполняемый код (за исключением inline-функций в C++) в заголовочные файлы не помещают. Например, идентификаторы, которые должны быть объявлены более чем в одном файле, удобно описать в заголовочном файле, а затем его подключать по мере надобности.
Основная цель использования заголовочных файлов — вынесение описания нестандартных типов и функций за пределы основного файла с кодом. На этом же принципе построены библиотеки: в заголовочном файле перечисляются содержащиеся в библиотеке функции и используемые ею структуры/типы, при этом исходный текст библиотеки может находиться отдельно от текста программы, использующей функции библиотеки или вообще быть недоступным.
|
|
Например, по сложившейся традиции, в заголовочных файлах объявляют функции стандартной библиотеки Си и Си++.
Рассмотрим заголовочные файлы наших процедур. Они не содержат ничего, кроме прототипа процедуры и нескольких директив.
Копирование файла
# ifndef CP _ H
# define CP _ H
void copyfile(char *, char *);
#endif /* CP_H */
Удаление файла
#ifndef DF_H
#define DF_H
void delfile(char *);
#endif /* DF_H */
Вывод ошибки
#ifndef ERR_H
#define ERR_H
#pragma once
void err1(void);
# endif /* ERR _ H */
Создание директории
# ifndef MD _ H
#define MD_H
void makedir(char *);
#endif /* MD_H */
Открытие файла
#ifndef OF_H
#define OF_H
void openfile(char *);
# endif /* OF _ H */
Удаление директории
# ifndef RD _ H
#define RD_H
void deldir(char *);
#endif /* RD_H */
Переименование файла
#ifndef RF_H
#define RF_H
void renamefile(char *path, char *nname);
# endif /* RF _ H */
Информация о файле или директории
#ifndef STFILE_H
#define STFILE_H
void statfile(char *path);
#endif /* STFILE_H */
Стоит подробнее остановится на директиве # ifndef. Эта директива указывает, что нужно компилировать строчки, идущие после неё, если символьная константа не определена (в случае модуля «Информация о файле или директории» символьной константой является STFILE _ H) и компиляция будет происходить, пока не встретится строчка # endif.
|
|
Приложение 3
Маски прав доступа
Маска прав доступа определяет кто имеет доступ к информации. Следует разделять маски для файлов и для каталогов, они различаются на один бит-Т бит. Если Т бит установлен в 1, то удалять файл из директории имеет право только владелец директории/ иначе(то есть если стоит 0) -удалять может не только владелец. Рассмотрим теперь оставшиеся три бита маски (они одинаковы для директории и для файла).
400 — владелец имеет право на чтение;
200 — владелец имеет право на запись;
100 — владелец имеет право на выполнение;
40 — группа имеет право на чтение;
20 — группа имеет право на запись;
10 — группа имеет право на выполнение;
4 — остальные имеют право на чтение;
2 — остальные имеют право на запись;
1 — остальные имеют право на выполнение.
Суммировав эти коды можно получить символьную запись. Например, 444:
400+40+4=444 — все имеют право только на чтение.
Дата добавления: 2019-03-09; просмотров: 186; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!