我有这个功能
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”的目录,它们和我的可执行文件都在同一个目录中。任何指导将不胜感激。
答案 0 :(得分:3)
if (result == -1);
return -1;
从第一行删除分号。
答案 1 :(得分:1)
从您的帖子看起来,用户安全性或目录可能没有适当的搜索授权方式可能存在一些问题。无论如何,你可以使用' stat'进行快速测试。命令并检查其是否正常工作。
$ stat filename.txt
是的,在stat()返回-1时,errno将有助于理解为什么这个系统调用失败。