#ファイル システムが作業に関与するため、ファイルやディレクトリが存在するかどうかを確認する必要がある場合があります。今後の調査を容易にするために、APUE 第 4 章の「ファイルとディレクトリ」を組み合わせて、ファイルとディレクトリが存在するかどうかを正しく判断する方法をまとめました。 (推奨学習: Linux の運用とメンテナンス )
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、EACCESS 存取文件时被拒绝 6、ENOMEM 核心内存不足 7、ENAMETOOLONG 参数file_name 的路径名称太长
以上がLinux にディレクトリが存在するかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。