c – Linux上的CreateFile CREATE_NEW等价物
作者:互联网
我写了一个尝试创建文件的方法.但是我设置了标志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和O_EXCL的组合就是你要找的.
例:
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.
}
标签:createfile,c,linux 来源: https://codeday.me/bug/20191008/1871464.html