我有一个要求,我需要检查给定目录是否存在。
我这样做
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()有时候表现不正常。为什么会这样发生?任何的想法 ?
答案 0 :(得分:3)
如果stat
失败,那么buf
中的值将被取消指定,不会被取消吗?
无论如何,我都没有看到检查它们的任何意义。结果会有什么用处?
如果stat
失败,请不要这样做。您应该始终检查POSIX函数的返回值。
(我很惊讶地发现,在这种情况下,联机帮助不会使行为明确,但这本身就是一个教训。)