Unix でのディレクトリの存在の確認: stat() および lstat() システム コールの利用
特定のディレクトリが存在するかどうかを判断するのは一般的なタスクですUnixプログラミングで。 opendir() のような関数は、エラー処理を通じてディレクトリの存在を示すことができますが、単に存在を確認する場合には理想的なアプローチではない可能性があります。この記事では、stat() および lstat() システム コールを使用してこのタスクを効率的に実行する方法を紹介します。
stat() および lstat()
stat() lstat() 関数は、ファイルのパス名に基づいて、ファイルの存在と種類に関する貴重な情報を提供します。 opendir() とは異なり、これらの関数はファイルを開きませんが、その属性に関するデータを収集します。 stat() と lstat() の主な違いは、シンボリック リンクの処理方法にあります。
ファイルがディレクトリであるかどうかを確認するには、S_ISDIR()マクロは stat() または lstat() と組み合わせて使用されます。次のコード スニペットは、その使用法を示しています。
#include <sys/stat.h> struct stat sb; if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode)) { // Directory exists and is accessible }
追加のファイル タイプ チェック
ディレクトリとは別に、特定の S_IS* マクロを使用して他のさまざまなファイル タイプを検証できます。包括的なリストは次のとおりです。
これらのマクロを理解すると、Unix プログラムで多用途のファイル タイプ チェックを行うことができます。
以上がstat() と lstat() を使用して Unix にディレクトリが存在するかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。