ホームページ >運用・保守 >Linuxの運用と保守 >Linux にファイルが存在するかどうかを確認する方法
Linux にファイルが存在するかどうかを確認する方法:
1. stat シリーズ関数
stat 関数は、ファイルに関連する構造情報を返すために使用されます。ファイル。 stat シリーズ関数には 3 つの状況があり、それぞれファイル名、ファイル記述子、シンボリック リンク ファイルに対応します。 stat 構造体は、主にファイル タイプ、ファイル サイズなどを含むファイル属性を記述します。詳細な stat 構造は次のとおりです。
struct stat { mode_t st_mode; // file type & mode(permissions) ino_t st_ino; // i-node number(serial number) dev_t st_dev; // device number(filesystem) dev_t st_rdev; // device number for specials files nlink_t st_nlink; // number of links uid_t st_uid; // user ID of owner gid_t st_gid; // group ID of owner off_t st_size; // size in bytes, for regular files time_t st_atime; // time of last access time_t st_mtime; // time of last modification time_t st_ctime; // time of last file status change long st_blksize; // best I/O block size long st_blocks; // number of 512-byte blocks allocated };
stat を通じてファイル タイプやファイル サイズなどの情報を取得できます。ファイル タイプには、通常のファイル、ディレクトリ ファイル、ブロック スペシャル ファイル、キャラクタ スペシャル ファイル、FIFO、ソケット、シンボリック リンクがあります。 stat 関数を使用してファイルまたはディレクトリが存在するかどうかを判断する場合、stat 関数を実行するときに、ファイルが存在する場合は、そのファイルが通常のファイルであるかディレクトリ ファイルであるかをさらに判断する必要があります。
stat シリーズ関数のエラーは -1 を返します。エラー コードは errno に格納されます。errno の値は次のとおりです:
1. ENOENT パラメータで指定されたファイル file_name存在しません
2. ENOTDIR パスのディレクトリは存在しますが、実際のディレクトリではありません
3. ELOOP で開くファイルにはシンボリック リンクが多すぎます。上限は 16 ですシンボリック リンク
4. EFAULT パラメータ buf 存在できないメモリ空間を指している無効なポインタです
5. ファイル
6 へのアクセス時に EACCESS が拒否されました。 ENOMEM コア メモリが不足しています
7. ENAMETOOLONG パラメータのパス file_name 名前が長すぎます
2. アクセス関数
アクセス関数はアクセス許可をテストします実際のユーザー ID と実際のグループに基づきます。関数プロトタイプは次のとおりです:
#include <unistd.h> int access(const char *pathname, int mode);
mode 値:
F_OK ファイルが存在するかどうかのテスト
R_OK 読み取り権限のテスト
W_OK 書き込み権限のテスト
X_OK テスト実行権限
ファイルが存在するかどうかを正しく判断するには、access 関数を使用します。実装は次のとおりです:
3. oepndir function
opendir 関数は、ファイル ディレクトリを開くために使用され、成功した場合はポインタを返し、エラーが発生した場合は NULL を返します。実装は次のとおりです:
(推奨学習: linux チュートリアル )
以上がLinux にファイルが存在するかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。