システムコールを使用してUnixでディレクトリの存在を確認する方法?

Barbara Streisand
リリース: 2024-11-07 13:09:03
オリジナル
842 人が閲覧しました

How to Check Directory Existence in Unix Using System Calls?

Unix でのディレクトリの存在の確認: システム コールを使用した包括的なガイド

問題:

Unix では、どのようにすればよいでしょうかディレクトリを開いたり、関連するエラーを処理したりせずに、システム コールを使用してディレクトリの存在を確認しますか?

回答:

POSIX システムは、この目的のために 2 つの重要な関数を提供します。 ) と lstat()。これらの関数を使用すると、パス名が有効なアクセス可能なオブジェクトを反映しているかどうかを確認し、そのタイプに関する情報を取得できます。

stat() と lstat() の主な違い:

  • stat(): シンボリック リンクをたどり、最終的な宛先に関する情報を提供します。
  • lstat(): シンボリック リンクが指すターゲットに関係なく、シンボリック リンク自体に関する情報を提供します。

stat() を使用した実装:

#include <sys/stat.h>

struct stat sb;

if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode)) {
    // True if pathname is a directory
}
ログイン後にコピー

追加のファイル タイプ検証:

< の S_IS* マクロの使用sys/stat.h> では、ディレクトリを超えて他のファイル タイプを確認できます:

  • S_ISREG: 通常のファイル
  • S_ISCHR: キャラクター デバイス
  • S_ISBLK: ブロック デバイス
  • S_ISFIFO: FIFO
  • S_ISLNK: シンボリックリンク
  • S_ISSOCK: ソケット

以上がシステムコールを使用してUnixでディレクトリの存在を確認する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート