stsdc
@stsdc

Почему mkdir не создает папку?

mkdir возвращает почему-то -1
Если убрать homedir->str и самому написать путь, то всё работает.
//check if dir exists
    struct stat st = {0};

    GString* homedir = g_string_new(NULL);
    g_string_append(homedir, getenv("HOME"));
    g_string_append(homedir, ".some/qwe");

    printf("%s", homedir->str);

    if (stat(&homedir->str, &st) == -1) {
        int res= mkdir(homedir->str, 0777);
    }
  • Вопрос задан
  • 2887 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
mkdir возвращает почему-то -1

errno? perror? не слышал?

Если убрать homedir->str и самому написать путь, то всё работает.

И со вложенными каталогами работает?


g_string_append(homedir, getenv("HOME"));
g_string_append(homedir, ".some/qwe");

слэша нет между $HOME и .some/qwe.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
1. Есть ли права на папку, в которой создаете файл? от чьего имени запускается скрипт, есть ли у этого пользователя права на запись?
2. Если mkdir запускается из chroot окружения какого-нибудь, он может быть заменен другой утилитой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы