GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリが存在するかどうかを確認するにはどうすればよいですか?

opendir() を使用できます ENOENT == errnoかどうかを確認します 失敗時:

#include <dirent.h>
#include <errno.h>

DIR* dir = opendir("mydir");
if (dir) {
    /* Directory exists. */
    closedir(dir);
} else if (ENOENT == errno) {
    /* Directory does not exist. */
} else {
    /* opendir() failed for some other reason. */
}

次のコードを使用して、フォルダーが存在するかどうかを確認します。 Windows と Linux の両方のプラットフォームで動作します。

#include <stdio.h>
#include <sys/stat.h>

int main(int argc, char* argv[])
{
    const char* folder;
    //folder = "C:\\Users\\SaMaN\\Desktop\\Ppln";
    folder = "/tmp";
    struct stat sb;

    if (stat(folder, &sb) == 0 && S_ISDIR(sb.st_mode)) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }
}

stat() を使うかもしれません struct stat のアドレスを渡します 、そのメンバー st_mode を確認します S_IFDIR を持っていることに対して

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

...

char d[] = "mydir";

struct stat s = {0};

if (!stat(d, &s))
  printf("'%s' is %sa directory.\n", d, (s.st_mode & S_IFDIR)  : "" ? "not ");
  // (s.st_mode & S_IFDIR) can be replaced with S_ISDIR(s.st_mode)
else
  perror("stat()");

Linux
  1. 「if」ステートメントに変数が存在するかどうかを確認するにはどうすればよいですか?

  2. Bashが色を印刷できるかどうかを確認する方法は?

  3. ディレクトリ全体で dos2unix を実行するにはどうすればよいですか?

  1. ディレクトリでのみ再帰的な chmod を実行するにはどうすればよいですか?

  2. ディレクトリツリーで最も古いファイルを見つけるにはどうすればよいですか

  3. \ という名前のファイルまたはディレクトリを削除するにはどうすればよいですか?

  1. 特定のディレクトリがマウントされているかどうかを確認する方法は??

  2. C++/Linux でディレクトリ ツリーを作成するにはどうすればよいですか?

  3. ファイルの存在を確認し、存在しない場合はコマンドを実行するにはどうすればよいですか?