リニューアル
サイトリニューアル中です。本ページは以下URLへ移動しました。
Prog.さな雑記
関数仕様
- 機能
ファイルに対する実ユーザーでのアクセス権をチェックする
- 書式
-
1
2
3
|
| #include <unistd.h>
int access (const char *filepath, int mode);
|
- 引数
filepath : アクセス権をチェックするファイルのパス
mode : チェックするアクセス権 (R_OK, W_OK, X_OK, F_OK)
- 戻り値
0 : 引数指定のアクセス権がある
-1 : 引数指定のアクセス権が無い、又はエラーが発生
- フラグ
フラグ | 意味 |
R_OK | 読み出し許可とファイルの存在をチェック |
W_OK | 書込み許可とファイルの存在をチェック |
X_OK | 実効許可とファイルの存在をチェック |
F_OK | ファイルの存在をチェック |
注意
このアクセス権のチェックは他のシステムコールとは異なり、access を呼び出したプロセスの実効ユーザー、実効グループではなく、実ユーザー、実グループの権限で行われる。例えば、root にセットユーザーIDされたコマンドの中から access が呼び出されたとしても、root 権限ではなく、元のユーザーでの権限でアクセス権のチェックが行われる。
サンプル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
-
|
|
-
|
|
!
|
|
|
!
| #include <unistd.h>
#include <stdio.h>
#define FILE_PATH "./test.dat"
int
main (void)
{
if (access (FILE_PATH, (R_OK | X_OK)))
{
perror ("access");
return -1;
}
printf ("Confirm result (R_OK | X_OK): PASS!\n");
return 0;
}
|