stat()函数未正确返回

时间:2014-03-17 18:37:00

标签: c++ c linux unix stat

我有这个功能

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 个答案:

答案 0 :(得分:3)

if (result == -1);
    return -1;

从第一行删除分号。

答案 1 :(得分:1)

从您的帖子看起来,用户安全性或目录可能没有适当的搜索授权方式可能存在一些问题。无论如何,你可以使用' stat'进行快速测试。命令并检查其是否正常工作。

$ stat filename.txt

是的,在stat()返回-1时,errno将有助于理解为什么这个系统调用失败。