2016-10-17 3 views
-1
#include <stdio.h> 
#include <stdlib.h> 
#include <sys/stat.h> 


int main(int argc, const char *argv[]) 
{ 
    char* original_path = "/home/userxxx/somedir/newdir"; 



    if (mkdir(original_path,0777) == -1) { 
     perror(argv[0]); 
     exit(EXIT_FAILURE); 
    } 



    return 0; 
} 

이것은 시스템 호출이 아니므로 -p를 사용하여 상위 디렉토리를 만들 수 없으며 posix 함수를 사용해야하며 상위 디렉토리와 중간 디렉토리가 존재하지 않으면 만들어야합니다.mkdir Posix 함수를 사용하여 디렉토리를 만들고 싶지만 상위 디렉토리가 존재하지 않습니다. 무엇을해야합니까?

+3

정답은 패스를 통과하여 존재하지 않는 디렉토리를 모두 만드는 것입니다. –

+0

어쩌면 상위 디렉토리를 먼저 만들까요? –

+0

코드에서 실제로 사용되는'mkdir (2)' "시스템 호출"과 시스템 콜이 아닌 -p를 허용하는'mkdir (1)'도구에 대한 "system() 호출"사이에는 미세한 차이점이 있습니다. – arsv

답변

0

당신은 재귀 기술을 사용하여이 문제를 해결 할 수 있습니다 의사

createFolder(folder) 
{ 
    if folder.exists return // blocks the recursion 
    createFolder(folder.parent) 
    folder.makefolder // this will make a folder one level at a time 
} 

그것은 존재하는 폴더에있는 함수를 호출은 무 조작 없다는 매력적인 기능을 가지고있다.