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

UptoLike

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

9
записи в начало каталога rewinddir(), определения текущей позиции указа-
теля чтения каталога telldir() и перемещения этого указателя в заданную
позицию seekdir().
В следующем примере создается жесткая ссылка файла stat_ex.c на
файл с новым именем link_ex.c. При после создания ссылки функцией
link("stat_ex.c","link_ex.c") в структуре statf фиксируется со-
стояние исходного файла, затем
число жестких ссылок из структуры выводится
на экран. После этого жесткая ссылка уничтожается (функцией
unlink("link_ex.c")) и снова выводится счетчик жестких ссылок.
/* Пример использования функций link() и stat() */
#include <unistd.h>
#include <sys/stat.h>
main()
{
struct stat statf;
if(link("stat_ex.c","link_ex.c") == -1) {
perror("Ошибка link");
return 1;
}
if(stat("stat_ex.c",&statf)) {
perror("Ошибка stat");
return 1;
}
printf("Количество ссылок = %d\n",statf.st_nlink);
if(unlink("link_ex.c")) {
perror("Ошибка unlink");
return 1;
}
if(stat("stat_ex.c",&statf)) {
perror("Ошибка stat");
return 1;
}
printf("Количество ссылок = %d\n",statf.st_nlink);
puts("Конец программы");
}
Следующий пример иллюстрирует возможность изменения режима досту-
па к файлу. В
начале программы при вызове функции
access("acc_ex.c", F_OK | !X_OK) для файла acc_ex.cc выполняется
проверка существует - ли файл (флаг F_OK) и запрещен - ли доступ на выполне-
ния (флаг !X_OK) для вызывающего функцию процесса. Если файл существует,
а доступ на выполнение запрещен, то функция возвращает значение ноль (вы-
полнение заданных флагами условий). В
этом случае для установки новых зна-
чений прав доступа вызывается функция
chmod("acc_ex.c",S_IRUSR|S_IWUSR|S_IXUSR|S_IROTH|S_IRGRP).
записи в начало каталога rewinddir(), определения текущей позиции указа-
теля чтения каталога telldir() и перемещения этого указателя в заданную
позицию seekdir().
      В следующем примере создается жесткая ссылка файла stat_ex.c на
файл с новым именем link_ex.c. При после создания ссылки функцией
link("stat_ex.c","link_ex.c") в структуре statf фиксируется со-
стояние исходного файла, затем число жестких ссылок из структуры выводится
на экран. После этого жесткая ссылка уничтожается (функцией
unlink("link_ex.c")) и снова выводится счетчик жестких ссылок.
/* Пример использования функций link() и stat() */
#include 
#include 
main()
{
  struct stat statf;
  if(link("stat_ex.c","link_ex.c") == -1) {
    perror("Ошибка link");
    return 1;
  }
  if(stat("stat_ex.c",&statf)) {
    perror("Ошибка stat");
    return 1;
  }
  printf("Количество ссылок = %d\n",statf.st_nlink);
  if(unlink("link_ex.c")) {
    perror("Ошибка unlink");
    return 1;
  }
  if(stat("stat_ex.c",&statf)) {
    perror("Ошибка stat");
    return 1;
  }
  printf("Количество ссылок = %d\n",statf.st_nlink);
  puts("Конец программы");
}
      Следующий пример иллюстрирует возможность изменения режима досту-
па    к    файлу.    В    начале    программы     при     вызове    функции
access("acc_ex.c", F_OK | !X_OK) для файла acc_ex.cc выполняется
проверка существует - ли файл (флаг F_OK) и запрещен - ли доступ на выполне-
ния (флаг !X_OK) для вызывающего функцию процесса. Если файл существует,
а доступ на выполнение запрещен, то функция возвращает значение ноль (вы-
полнение заданных флагами условий). В этом случае для установки новых зна-
чений           прав          доступа          вызывается            функция
chmod("acc_ex.c",S_IRUSR|S_IWUSR|S_IXUSR|S_IROTH|S_IRGRP).

                                     9