我编写了一个尝试创建文件的方法。不过,我设置了标志 CREATE_NEW,因此它只能在它不存在时创建它。它看起来像这样:
for (;;)
{
handle_ = CreateFileA(filePath.c_str(), 0, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_HIDDEN | FILE_FLAG_DELETE_ON_CLOSE, NULL);
if (handle_ != INVALID_HANDLE_VALUE)
break;
boost::this_thread::sleep(boost::posix_time::millisec(10));
}
这按其应该的方式工作。现在我想把它移植到linux上,当然CreateFile函数只适用于windows。所以我正在寻找与此等效的东西,但在Linux上。我已经看过 open() 但我似乎找不到像 CREATE_NEW 一样工作的标志。有谁知道这个问题的解决方案?
看看open()
manpage, 的组合O_CREAT
and O_EXCL
就是您正在寻找的。
Example:
mode_t perms = S_IRWXU; // Pick appropriate permissions for the new file.
int fd = open("file", O_CREAT|O_EXCL, perms);
if (fd >= 0) {
// File successfully created.
} else {
// Error occurred. Examine errno to find the reason.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)