[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Доступность файла - Пример

Эта программа определяет, доступен ли файл по чтению, по изменению, по
исполнению и просто его существование. Она работает следующим образом:
3    Эта символьная константа - размерность массива table[].
8-16 Эта таблица используется для перевода режимов доступа на
английский.
18-24     Этот цикл проверяет четыре режима доступа файла.
19-21     Если вызов access(2) успешен для данного режима, печатается
соответствующее сообщение.
22-23     Если access(2) неуспешен, то сообщение об ошибке выводится с
помощью perror(3).
Это пример демонстрируется следующим образом:
$ access access
exists - ok
execute - ok
write: Text file busy
read - ok
$ access /etc/passwd
exists - ok
execute: Permission denied
write: Permission denied
read - ok

В первом случае программа используется для проверки прав доступа
исполняемого программного файла. Система не допускает доступа на
изменение программного файла. Во втором случае программа используется
для проверки прав доступа файла /etc/passwd.
Файл: access.c
                      ДОСТУПНОСТЬ ФАЙЛА - ПРИМЕР

 1 #include <stdio.h>
 2 #include <unistd.h>
 3 #define   TABLESIZ   (sizeof(table)/sizeof(*table))
 4
 5 main(int argc, char *argv[])
 6 {
 7      int i;
 8      static struct {
 9       int mode;
10       char *text;
11      } table[ ] = {
12       { F_OK, "exists" },
13       { X_OK, "execute" },
14       { W_OK, "write" },
15       { R_OK, "read" }
16      };
17
18      for (i = 0; i < TABLESIZ; i++) {
19       if (access(argv[1], table[i].mode) != -1)
20           printf("%s - ok\n",
21                table[i].text);
22       else
23            perror(table[i].text);
24      }
25 }