Создание каталога с помощью mknod()

Мне нужно создать каталог с помощью mknod() (использование mkdir() в моем случае это не разрешено), я бы вызвал программу из определенного каталога и указал путь, по которому новый каталог должен быть создан внутри предыдущего.

Пример: если я /home/user/test/ и внутри test есть /level1/Хочу создать каталог level2 внутри level1так что я бы передал аргумент /level1/level2/

У меня есть следующий код, который работает, когда я создаю канал, но когда я меняю режим на S_IFDIRничего не делает.

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>

void main(int argc,char *argv[]){
    int status;
    if ((status  = mknod(argv[1], S_IFDIR,0)) == 1){
        printf("error\n" );
    }
    exit(0);

}

2 ответа

mknod обычно используется для создания узлов устройства (специальные каталоги).

Однако некоторые ОС поддерживают создание обычного каталога с mknod (QNX).

Вы проверили страницу руководства для mknod в используемой ОС? Я совершенно уверен, что S_IFDIR это непереносимая опция для mknod,

В приведенном выше коде нет ничего плохого. Я столкнулся с этим в старой версии Unix, и mknod нуждался в эффективном идентификаторе root для создания каталога. Я подозреваю, что если вы вызвали perror("") после сбоя, вы получите что-то вроде "Не разрешено".

Другие вопросы по тегам