2012-04-04 6 views
2

Ich habe ein kleines Problem, ich muss Verzeichnis von meinem c-Code oder C++ machen, spielt keine Rolle. Der Verzeichnisname muss jedoch Zeichen wie ':', '', '.' Enthalten. im Allgemeinen aktuelle Zeit, wenn ich versuche, mit mkdir() Funktion zu erstellen, bekomme ich EINVAL Fehler, aber von system("mkdir ...") ist alles in Ordnung. Wie kann ich dieses Problem lösen?mkdir, Pfadname mit Symbol

Danke !!!

+1

Können Sie einen Beispielnamen geben, der mit Shell 'mkdir' und nicht' mkdir() 'arbeitet? Auch auf der Manpage wird "EINVAL" nicht einmal als einer der möglichen Fehlercodes aufgelistet, was es merkwürdig macht, dass Sie es sehen. – FatalError

+0

Können Sie ein Code-Snippet posten? Klingt vielleicht, dass der Dateiname nicht die Sonderzeichen richtig entkernt hat? – rfinz

+0

'mkdir()' gibt bei Erfolg null zurück, -1 bei Fehlern. * Errno *. EINVAL ist kein dokumentierter * errno * Wert für mkdir(). Wenn Sie für jedes Feld eine feste Anzahl von Ziffern verwenden, sind die Trennzeichen in keinem Fall etwas überflüssig? – Clifford

Antwort

4

Verschiedene Dateisystemformate haben unterschiedliche Regeln darüber, was ein gültiges Zeichen ist und was nicht. Für ext2 und seine Nachkommen kann ein Dateiname ein beliebiges Zeichen außer '/' oder '\0' enthalten.

Für das FAT-Dateisystem und seine Nachkommen ist die Liste der ungültigen Zeichen größer und enthält ':'.

Überprüfen Sie, welches Dateisystemformat Sie verwenden, und versuchen Sie, Ihr Programm auf einem anderen Dateisystem auszuführen.

+0

FAT))) Danke! – evghin

+0

Wie erklären Sie die Tatsache, dass 'System (" mkdir ... ")' funktioniert, aber auf dem gleichen Dateisystem 'mkdir()' nicht? – Shahbaz

+0

@Shahbaz - Ich erkläre es nicht. Ich nehme an, dass sein Test fehlerhaft ist. –