ВУЗ:
Составители:
10
Первый параметр определяет имя файла, значение второго параметра формиру-
ется логическим сложением флагов, которые определяют разрешение на чтение,
запись и исполнение для пользователя и членов группы, к которой принадлежит
пользователь. Если функция возвращает признак ошибки (результат, отличный
от нуля), то на терминал выводится сообщение об ошибке и программа возвра-
щает
код 1.
/* Пример проверки файла и изменения режима */
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
main()
{
if( ! access("acc_ex.c", F_OK | !X_OK)) {
puts("Установка прав");
if(chmod("acc_ex.c",S_IRUSR | S_IWUSR | S_IXUSR |
S_IROTH | S_IRGRP)) {
perror("Ошибка смены режима");
return 1;
}
}
}
Каталог в операционных системах семейства UNIX является файлом спе-
циального вида. Такой файл представляет последовательность записей. Каждая
запись включает логическое имя файла (строка символов) и номер индексного
дескриптора файла (inode).
Если при исполнении программы необходимо работать с каталогом,
то
можно воспользоваться специальными системными вызовами. При этом исполь-
зуются определения из заголовочного файла dirent.h. Функция opendir()
открывает каталог и возвращает указатель на структуру DIR* (дескриптор ката-
лога) для последующих обращений к файлу. Функция readdir() читает запись
каталога, определяемую дескриптором. Результат чтения помещается в структу-
ру dirent. Функция closedir() закрывает каталог
. При необходимости
можно возвратить указатель текущей записи каталога на его начало. Это выпол-
няется по функции rewinddir().
Следующий пример позволяет прочесть содержимое каталога, имя которо-
го задается аргументом командной строки при вызове программы. Для каждой
записи каталога выводятся имя файла и номер дескриптора файла - inode. В на-
чале программы определены структура
для размещения очередной записи ката-
лога (mydir) и указатель на текущую запись каталога – дескриптор каталога
(dir_ds). Структура struct dirent определена в заголовочном файл и со-
держит поля d_name и d_ino. Первое поле хранит строку с логически именем
файла. Второе поле содержит номер индексного дескриптора.
Первый параметр определяет имя файла, значение второго параметра формиру- ется логическим сложением флагов, которые определяют разрешение на чтение, запись и исполнение для пользователя и членов группы, к которой принадлежит пользователь. Если функция возвращает признак ошибки (результат, отличный от нуля), то на терминал выводится сообщение об ошибке и программа возвра- щает код 1. /* Пример проверки файла и изменения режима */ #include#include #include main() { if( ! access("acc_ex.c", F_OK | !X_OK)) { puts("Установка прав"); if(chmod("acc_ex.c",S_IRUSR | S_IWUSR | S_IXUSR | S_IROTH | S_IRGRP)) { perror("Ошибка смены режима"); return 1; } } } Каталог в операционных системах семейства UNIX является файлом спе- циального вида. Такой файл представляет последовательность записей. Каждая запись включает логическое имя файла (строка символов) и номер индексного дескриптора файла (inode). Если при исполнении программы необходимо работать с каталогом, то можно воспользоваться специальными системными вызовами. При этом исполь- зуются определения из заголовочного файла dirent.h. Функция opendir() открывает каталог и возвращает указатель на структуру DIR* (дескриптор ката- лога) для последующих обращений к файлу. Функция readdir() читает запись каталога, определяемую дескриптором. Результат чтения помещается в структу- ру dirent. Функция closedir() закрывает каталог. При необходимости можно возвратить указатель текущей записи каталога на его начало. Это выпол- няется по функции rewinddir(). Следующий пример позволяет прочесть содержимое каталога, имя которо- го задается аргументом командной строки при вызове программы. Для каждой записи каталога выводятся имя файла и номер дескриптора файла - inode. В на- чале программы определены структура для размещения очередной записи ката- лога (mydir) и указатель на текущую запись каталога – дескриптор каталога (dir_ds). Структура struct dirent определена в заголовочном файл и со- держит поля d_name и d_ino. Первое поле хранит строку с логически именем файла. Второе поле содержит номер индексного дескриптора. 10
Страницы
- « первая
- ‹ предыдущая
- …
- 8
- 9
- 10
- 11
- 12
- …
- следующая ›
- последняя »