为什么fopen thown errno:22当我在Android中使用带冒号的文件名时?

时间:2013-09-08 15:20:40

标签: android c++ c linux file-io

当我使用带有2012-12-12 12:00:00冒号的文件名时,fopen将失败,错误为Invalid argument。如果我将文件名更改为2012-12-12 12-00-00,它就会正常运行。 errno Invalid argument是什么意思?我试图在adb shell的Android中运行命令,我尝试touch一个名字冒号的文件,它失败了,但如果我使用vi新建一个带冒号的文件名字,它是正确的。这有什么问题?我已经检查了路径,没有问题。

errno = 0;
FILE *fp = fopen("/sdcard/2012-12-12 12:00:00", "a");
if (fp == NULL) {
    strerror(errno)   // Invalid argument
    return;
}

fprintf(fp, "%s", "something");
fclose(fp);

1 个答案:

答案 0 :(得分:2)

我认为问题出现是因为冒号:用作* NIX系统下的路径列表分隔符(例如,用于分隔PATH环境变量中列出的路径名)。可能有些内部处理因此而出错。