假设有一些字符串:
std::string some_string = "some_string";
我想知道chdir(some_string.c_str())
是否会在不调用的情况下返回-1。有快速的方法吗?
P.S。我希望我的代码也适用于Windows,我将使用_chdir()
答案 0 :(得分:2)
我会使用Boost's is_directory function,您可以在Boost's Filesystem Reference page找到更多信息。
答案 1 :(得分:2)
#ifdef WIN32
# include <io.h>
#else
# include <unistd.h>
#endif
int access(const char *pathname, int mode);
// check user's permissions for a file
int mode values:
00 - 仅存在, 02 - 只写, 04 - 只读, 06 - 读写。
如果文件具有给定模式,则函数返回0.
答案 2 :(得分:2)
我想知道
chdir(some_string.c_str())
是否会在不调用的情况下返回-1
你需要小心做出那些检查。问题是如果你依赖于他们的结果,因为在你进行检查和执行依赖于检查的操作之间,另一个进程可能已经执行了一个操作(在这种情况下为rmdir
),这使得assumptin in你的代码。也就是说,您可以在代码中引入竞争危险。
答案 3 :(得分:0)
由于您希望它适用于Windows,请使用返回GetFileAttributes()
的File Attribute Constants
。
GetFileAttributesEx
甚至更好。