2012-04-04 1 views
2

У меня есть небольшая проблема, мне нужно сделать каталог из моего кода c или C++, не имеет значения. Но имя каталога должно содержать символы типа ':', '', '.' в общем текущее время, , когда я пытаюсь создать с помощью функции mkdir(), я получаю ошибку EINVAL, но от system("mkdir ...") все в порядке. Как я могу решить эту проблему?mkdir, pathname с символом

спасибо !!!

+1

Можете ли вы привести примерное имя, которое работает с оболочкой 'mkdir', а не' mkdir() '? Также man-страница даже не перечисляет 'EINVAL' как один из возможных кодов ошибок, что делает его странным, что вы его видите. – FatalError

+0

Можете ли вы опубликовать фрагмент кода? Похоже, возможно, имя файла не имеет специальных символов, которые были экранированы? – rfinz

+0

'mkdir()' возвращает ноль при успехе, -1 в наборах ошибок * errno *. EINVAL не является документированным значением * errno * для mkdir(). Если вы используете фиксированное количество цифр для каждого поля, не являются ли разделительные символы несколько избыточными в любом случае? – Clifford

ответ

4

Различные форматы файловой системы имеют разные правила о том, что является и не является допустимым символом. Для ext2 и его потомков имя файла может содержать любой символ, кроме '/' или '\0'.

Для файловой системы FAT и ее потомков список недопустимых символов больше и включает в себя ':'.

Проверьте, какой формат файловой системы вы используете, и попробуйте запустить свою программу в другой файловой системе.

+0

FAT))) Спасибо! – evghin

+0

Как вы объясните, что 'system (" mkdir ... ")' работает, но в той же файловой системе 'mkdir()' does not? – Shahbaz

+0

@Shahbaz - Я не объясняю это. Я полагаю, что его тест испорчен. –