GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu zkontrolovat, zda adresář existuje?

Můžete použít opendir() a zkontrolujte, zda ENOENT == errno při selhání:

#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. */
}

Pomocí následujícího kódu zkontrolujte, zda složka existuje. Funguje na platformách Windows i 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");
    }
}

Můžete použít stat() a předejte mu adresu struct stat , pak zkontrolujte jeho člena st_mode za to, že máte S_IFDIR set.

#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. Jak zkontrolovat, zda je připojen konkrétní adresář?

  2. Jak mohu vytvořit strom adresářů v C++/Linux?

  3. Jak mohu zkontrolovat, zda soubor existuje, a provést příkaz, pokud ne?

  1. Jak mohu vypočítat kontrolní součet md5 adresáře?

  2. Jak zkontrolovat, zda existuje příkaz shellu z PHP

  3. Jak zkontrolovat, zda soubor existuje v konkrétním adresáři ve skriptu bash?

  1. Jak mohu vyloučit adresář z příkazu ls

  2. Jak mohu provést rekurzivní chmod pouze v adresářích?

  3. Jak mohu najít nejstarší soubor ve stromu adresářů