代码之家  ›  专栏  ›  技术社区  ›  AlwaysLearning

stat()函数未正确返回

  •  0
  • AlwaysLearning  · 技术社区  · 10 年前

    我有这个功能

    long processFile(char * fileName)
    {
        struct stat statBuf;
        mode_t mode;
        int result;
        result = stat(fileName, &statBuf);
        if (result == -1);
            return -1;
        if(S_ISDIR(mode))
            return(processDirectory(fileName));
        else
            return 1;
    }
    

    如果“fileName”是一个实际的文件,我希望它返回一个,但如果“fileName”是目录,我希望其转到我的函数 processDirectory 。出于某种原因,无论我做什么 stat() 呼叫不断返回 -1 我已经尝试过对一个文件名(如“test.txt”)和一个名为“/test”的目录进行编码,这两个文件名都与我的可执行文件位于同一个目录中。任何指导都将不胜感激。

    2 回复  |  直到 10 年前
        1
  •  3
  •   Jim Balter    10 年前
    if (result == -1);
        return -1;
    

    删除第一行中的分号。

        2
  •  1
  •   Mantosh Kumar    10 年前

    从您的帖子来看,用户安全可能有问题,或者目录可能没有适当的搜索授权。无论如何,您可以使用“stat”命令进行快速测试,并检查其是否工作。

    $stat文件名.txt

    是,在stat()返回-1时返回errno将有助于理解此系统调用失败的原因。