GNU/Linux >> Znalost Linux >  >> Linux

Vytvoření nového adresáře v C

Můžete použít mkdir:

$ man 2 mkdir

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

int result = mkdir("/home/me/test.txt", 0777);

Podívejte se na stat pro kontrolu, zda adresář existuje,

A mkdir , pro vytvoření adresáře.

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

struct stat st = {0};

if (stat("/some/directory", &st) == -1) {
    mkdir("/some/directory", 0700);
}

Manuál k těmto funkcím můžete zobrazit pomocí man 2 stat a man 2 mkdir příkazy.


Chci napsat program, který (...) vytvoří adresář a v něm (...) soubor

protože toto je velmi častá otázka, zde je kód pro vytvoření více úrovní adresářů a volání fopen. K vytištění chybové zprávy pomocí printf používám rozšíření gnu.

void rek_mkdir(char *path) {
    char *sep = strrchr(path, '/');
    if(sep != NULL) {
        *sep = 0;
        rek_mkdir(path);
        *sep = '/';
    }
    if(mkdir(path, 0777) && errno != EEXIST)
        printf("error while trying to create '%s'\n%m\n", path); 
}

FILE *fopen_mkdir(char *path, char *mode) {
    char *sep = strrchr(path, '/');
    if(sep) { 
        char *path0 = strdup(path);
        path0[ sep - path ] = 0;
        rek_mkdir(path0);
        free(path0);
    }
    return fopen(path,mode);
}

Linux
  1. Počítání počtu souborů v adresáři pomocí C

  2. Vyloučení adresáře při vytváření souboru .tar.gz

  3. Závažná chyba:cuda.h:Žádný takový soubor nebo adresář

  1. Zabraňte 10.2 ve vytváření adresáře Wolfram Mathematica na Linuxu

  2. Mohu přidat zkratku pro nahrazení cesty v Linuxu?

  3. Rsync kopíruje aktuální adresář s názvem

  1. Vytváření, mazání a správa adresářů v systému Linux

  2. CD do neznámého adresáře na známé cestě?

  3. Použití / při použití cd