Creare una nuova directory in C

Voglio scrivere un programma che controlli l’esistenza di una directory; se questa directory non esiste, crea la directory e un file di registro al suo interno, ma se la directory esiste già, crea semplicemente un nuovo file di registro in quella cartella.

Come lo farei in C con Linux?

Guarda le stat per verificare se la directory esiste,

E mkdir , per creare una directory.

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

Puoi vedere il manuale di queste funzioni con i comandi man 2 stat e man 2 mkdir .

Puoi usare mkdir:

$ man 2 mkdir

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

Voglio scrivere un programma che (…) crei la directory e un file (…) al suo interno

perché questa è una domanda molto comune, ecco il codice per creare più livelli di directory e di chiamare fopen. Sto usando un’estensione di GNU per stampare il messaggio di errore con printf.

 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); }