Je veux écrire un programme qui vérifie l'existence d'un répertoire; si ce répertoire n'existe pas, il crée le répertoire et un fichier journal à l'intérieur de celui-ci, mais si le répertoire existe déjà, il crée simplement un nouveau fichier journal dans ce dossier.
Comment ferais-je cela en C avec Linux?
Regardez stat
pour vérifier si le répertoire existe,
Et mkdir
, pour créer un répertoire.
#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);
}
Vous pouvez voir le manuel de ces fonctions avec le man 2 stat
et man 2 mkdir
commandes.
Vous pouvez utiliser mkdir:
#include <sys/stat.h>
#include <sys/types.h>
int result = mkdir("/home/me/test.txt", 0777);
Je veux écrire un programme qui (...) crée le répertoire et un fichier (...) à l'intérieur de celui-ci
comme il s’agit d’une question très courante, voici le code permettant de créer plusieurs niveaux de répertoires et d’appeler fopen. J'utilise une extension gnu pour imprimer le message d'erreur avec 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);
}