СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ



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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!