我正在尝试为读取和写入操作打开文件。 如果文件已存在,则应附加。 (我希望能够写到它,也可以稍后阅读)
但是,如果该文件存在,我无法附加(我得到权限被拒绝:无法创建文件)
int main()
{
int file;
file = open("redirect.txt", O_RDWR | O_APPEND | O_CREAT, 777);
if(!(file == -1)) //edited per comment
{
close(file);
}
else
perror("File could not be created\n");
return 0;
}
如果新文件不存在,则只打开一个新文件,但如果现有文件存在,则不会附加到该文件。
答案 0 :(得分:2)
您忘记了open()
的mode参数必须是八进制的。这将有效:
file = open("redirect.txt", O_RDWR | O_APPEND | O_CREAT, 0777);
正如zwol所提到的,创建0666的文件通常是个好主意(因为它们不需要是可执行的)。