Работа с интерфейсом прикладного программирования операционной системы Linux. Шашков Б.Д. - 10 стр.

UptoLike

Составители: 

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