C++ stat()函数未正确返回

C++ stat()函数未正确返回,c++,c,linux,unix,stat,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))

我有这个功能

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”的目录进行编码,这两个目录都与我的可执行文件位于同一目录中。任何指导都将不胜感激

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

$stat filename.txt


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

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

if (result == -1);
    return -1;
$stat filename.txt

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

if (result == -1);
    return -1;
从第一行中删除分号


从第一行中删除分号。

错误号的值为?是。就像它在
stat(2)
手册页的返回值部分所说的那样{perror(“stat”);返回-1;}stat(2)手册页的返回值部分所说的那样{perror(“stat”);返回-1;}