ここでは、C言語でファイルのアクセス権限を調べる access 関数のリファレンスを掲載しています。ファイルのアクセス権限の確認で、ファイルの存在確認、読み取り権限、書き込み権限、および実行権限の確認を行うことができます。
スポンサーリンク
ファイルのアクセス権限を調べる access 関数の I/F
#include <unistd.h>
int access (const char *filepath, int mode);
サンプルコード
ファイルの存在、読み取り権限、実行権限の確認を行う簡単なサンプルコードになります。サンプル内のコメントも参照ください。
//#define FILE_PATH "/path/to/file.txt"
// ファイルが存在し、読み込み権限および実行権限があるかを確認
// 権限の確認がすべてOKに場合には、0 がリターンされる
// 権限がない、またはその他のエラーの場合は -1 がリターンされる
if (access (FILE_PATH, (R_OK | X_OK)))
{
// ファイルが存在しない、読み取り権限がない、実行権限がない、
// またはその他のエラー
perror ("access");
}
mode の設定値
access 関数の第2パラメータには、以下の値の論理和で設定することができます。
| モード | 内容 |
|---|---|
| R_OK | ファイルの存在確認と読み出し権限の有無を確認 |
| W_OK | ファイルの存在確認と書込み権限の有無を確認 |
| X_OK | ファイルの存在確認と実行権限の有無を確認 |
| F_OK | ファイルの存在確認のみ |
Windows のモード値
Windows の場合は、_access 関数を使用します。また、Unix 系とは違い実行権限の確認を行うモードがありません。
- [ 参考 ] _access、_waccess
| mode の値 | 内容 |
|---|---|
| 00 | ファイルの存在確認のみ |
| 02 | 書き込み専用 |
| 04 | 読み取り専用 |
| 06 | 読み取りと書き込み権限の確認 |