我有一个小问题,我需要用我的C代码或C++创建目录,但目录名称必须包含像':'、' '、'.'这样的字符,一般是当前时间。当我尝试使用mkdir()函数创建时,我会得到EINVAL错误,但是从system("mkdir ...")中一切都很好。我该如何解决这个问题呢?谢谢!
不同的文件系统格式对于哪些字符是有效或无效的有不同的规则。对于ext2及其后代,文件名可以包含任何字符,除了'/'或'\0'。对于FAT文件系统及其后代,无效字符列表更长,包括':'。请检查您正在使用的文件系统格式,并尝试在不同的文件系统上运行程序。
mkdir
中有效而在mkdir()
中无效的名称示例吗?此外,man页面甚至没有将EINVAL
列为可能的错误代码之一,这使得你看到它很奇怪。 - FatalErrormkdir()
成功时返回零,出错时返回-1并设置 errno。EINVAL 不是 mkdir() 的文档化 errno 值。如果您为每个字段使用固定数量的数字,那么分隔符字符在任何情况下都有些多余,不是吗? - Cliffordmkdir
的EINVAL
,但是如果您尝试创建一个文件或目录的名称不受文件系统支持,Linux 确实会返回EINVAL
。这是有道理的;我认为这是文档错误。 - Gilles 'SO- stop being evil'