2012-04-04 46 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