如果我在目录路径的stat()失败时解释stat()属性会发生什么?

时间:2016-08-20 10:23:44

标签: c++ stat

我有一个要求,我需要检查给定目录是否存在。

我这样做

structure stat buf;
stat(dir_path,buf);

if( S_ISDIR(buf.st_mode) )
cout << " its a directory " << endl;
else
cout << " its not a directory " << endl;

这个程序有时不起作用。输出对我来说不一致。

是不是,当stat()调用失败时我不应该执行S_ISDIR()?

因为我在这里看到的随机行为是..

目录路径的stat()失败然后我正在尝试S_ISDIR(buf.st_mode)

所以,现在这个S_ISDIR()有时候表现不正常。为什么会这样发生?任何的想法 ?

1 个答案:

答案 0 :(得分:3)

如果stat失败,那么buf中的值将被取消指定,不会被取消吗?

无论如何,我都没有看到检查它们的任何意义。结果会有什么用处?

如果stat失败,请不要这样做。您应该始终检查POSIX函数的返回值。

(我很惊讶地发现,在这种情况下,联机帮助不会使行为明确,但这本身就是一个教训。)