Можно ли создать многоуровневый каталог?

Используя mkdir() (функция C), я могу создать 1-уровневый каталог, если я хочу создать каталог multi_level, например:

 folder/subfolder/subsubfolder 

Является ли это возможным? если да, то как?

 mkdir --parents folder/subfolder/subsubfolder mkdir -p folder/subfolder/subsubfolder 
 mkdir -p /dir1/dir2/dir3 

Для получения дополнительной информации см. Справочную страницу:

 man mkdir 

Я не пробовал, но что-то вроде:

 #include <libgen.h> void mkdir_recursive(char *path) { char *subpath, *fullpath; fullpath = strdup(path); subpath = dirname(path); if (strlen(subpath) > 1) mkdir_recursive(subpath); mkdir(fullpath); free(fullpath); } 

или:

 #include <string.h> void mkdir_recursive(char *path) { char *subpath, *fullpath; fullpath = strdup(path); subpath = basename(path); if (strlen(subpath) > 0) mkdir_recursive(subpath); mkdir(fullpath); free(fullpath); } 

Первый способ всегда должен работать. Второй способ должен работать только в том случае, если ваш путь начинается с завершающей косой черты, потому что он будет циклически перемещаться по путям, начиная с точки.

В случае отсутствия -p списки аргументов обычно анализируются в том порядке, в котором они отображаются в командной строке, таким образом:

 mkdir adam adam/bertil adam/bertil/caesar 

функционально эквивалентно

 mkdir -p adam/bertil/caesar