2012-04-04 87 views
2

我有一個小問題,我需要從我的c代碼或C++中創建目錄,沒關係。 但目錄名稱必須包含':','','。'等字符。在目前的一般時間, 當我嘗試創建與mkdir()函數我得到EINVAL錯誤,但從system("mkdir ...")一切都很好。 我該如何解決這個問題?mkdir,帶有符號的路徑名

謝謝!!!

+1

你可以給一個與shell mkdir而不是mkdir()一起使用的例子嗎?另外手冊頁甚至沒有列出'EINVAL'作爲可能的錯誤代碼之一,這讓你很奇怪你看到它。 – FatalError 2012-04-04 16:31:54

+0

你能發佈一段代碼嗎?聽起來好像文件名沒有正確轉義的特殊字符? – rfinz 2012-04-04 16:32:56

+0

mkdir()在成功時返回零,在錯誤集合上返回-1 * errno *。 EINVAL不是mkdir()記錄的* errno *值。如果你爲每個字段使用固定數量的數字,在任何情況下都不是分隔符字符有點多餘? – Clifford 2012-04-04 18:10:13

回答

4

不同的文件系統格式對於什麼是和不是有效的字符有不同的規則。對於ext2及其後代,文件名可能包含除'/''\0'以外的任何字符。

對於FAT文件系統及其後代,無效字符列表較大,包括':'

檢查您正在使用的文件系統格式,並嘗試在不同的文件系統上運行您的程序。

+0

FAT)))謝謝! – evghin 2012-04-05 04:46:42

+0

你如何解釋'system(「mkdir ...」)'工作的事實,但是在同一個文件系統中'mkdir()'沒有? – Shahbaz 2012-04-05 11:43:28

+0

@Shahbaz - 我不解釋它。我認爲他的測試是有缺陷的。 – 2012-04-05 13:31:35