fopen函数 返回No such file or directory,但是文件是存在的

        C语言调用fopen打开一个存在的文件并且是绝对路径,结果返回No such file or directory,正常自己写代码应该不会遇到问题。我是在一个开源代码基础上做修改,遇到上述问题。

        自己写一个程序相同的代码时可以打开的,所以可以断定不是代码问题,一定是开源代码有什么骚操作。最后我发现原有代码里的fopen没有问题,但是他打开文件有一个判断,有一个变量标识控制路径的赋值,结果把这个路径打印出来,是一个相对路径。在查看那个控制变量,通过如下代码调用后设置。

int Privsep_Chroot(const char *path)
{
    if (chdir(path) < 0) {
        return (OS_INVALID);
    }

    if (chroot(path) < 0) {
        return (OS_INVALID);
    }

    if (chdir("/") < 0) {
        return (OS_INVALID);
    }

    return (OS_SUCCESS);
}

        查看了下chroot()和chdir()作用。就是他俩搞的鬼,更改了root目录。所以导致fopen找到不路径位置。唉,真相只有一个,代码问题。之前看代码没注意这块,终究掉进这个坑里。

你可能感兴趣的:(fopen,No,such,file,or,directory,c语言,开发语言)