2016-10-17 16 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を使用できません。存在しない場合は、親ディレクトリと中間ディレクトリも作成する必要があります。mkdir Posix関数を使用してディレクトリを作成したいが、親ディレクトリが存在しない。

+3

真っ直ぐな答えは、存在しないディレクトリをすべてパスをたどって作成することです。 –

+0

おそらく親ディレクトリを最初に作成しますか? –

+0

コードで実際に使用されている 'mkdir(2)' 'システムコールと、' '-pを受け入れるがシステムコールではない' 'mkdir(1)' 'ツールとの間には細かい違いがあります。 – 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 
} 

にそれは存在するフォルダ上の関数の呼び出しは何もしませんという魅力的な特徴を持っています。

関連する問題