【发布时间】:2016-06-21 14:10:20
【问题描述】:
我正在使用open() 函数打开一个文件。
我希望 open() 函数在文件内容已经存在时丢弃它,然后将该文件视为一个新的空文件。
我尝试了以下代码:
int open_file(char *filename)
{
int fd = -1;
fd = open(filename, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
if (fd < 0) {
printf("Couldn't create new file %s: %s\n",
filename, strerror(errno));
return -1;
}
close(fd);
return 0;
}
但我收到以下错误:
Couldn't create new file kallel333: File exists
我错过了什么?
【问题讨论】:
-
您要删除还是截断文件
-
您是否尝试过添加 O_TRUNC 标志。
-
@sas 水,目标是打开一个新的空文件。我不想得到这个错误
-
添加
O_TRUNC并删除O_EXCL。O_EXCL表示该文件可能不存在 - 如果存在,open()将失败。O_TRUNC表示如果文件已存在则截断该文件。