디렉토리의 존재를 확인하는 프로그램을 작성하고 싶습니다. 해당 디렉토리가 존재하지 않으면 디렉토리와 그 안에 로그 파일을 생성하지만 디렉토리가 이미 존재하면 해당 폴더에 새 로그 파일을 생성합니다.
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 stat
및 man 2 mkdir
명령을 사용하여 이러한 기능의 설명서를 볼 수 있습니다 .
답변
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);
}