[c] C에서 새 디렉토리 만들기

디렉토리의 존재를 확인하는 프로그램을 작성하고 싶습니다. 해당 디렉토리가 존재하지 않으면 디렉토리와 그 안에 로그 파일을 생성하지만 디렉토리가 이미 존재하면 해당 폴더에 새 로그 파일을 생성합니다.

Linux에서 C에서 어떻게 할 수 있습니까?



답변

stat디렉토리가 존재하는지 확인하기위한,

그리고 mkdir, 디렉토리를 만듭니다.

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

man 2 statman 2 mkdir명령을 사용하여 이러한 기능의 설명서를 볼 수 있습니다 .


답변

mkdir을 사용할 수 있습니다.

$ man 2 mkdir

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

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


답변

(…) 디렉토리와 그 안에 (…) 파일을 생성하는 프로그램을 작성하고 싶습니다.

이것은 매우 일반적인 질문이기 때문에 여기에 여러 수준의 디렉토리를 만들고 fopen을 호출하는 코드가 있습니다. gnu 확장을 사용하여 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);
}


답변