[<<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 }