UNIX C - 简单的write()操作不断失败

时间:2014-11-07 07:45:15

标签: c unix file-io

我想创建一个名为“common.txt”的文件,如果该文件不存在,则附加一个字符。

这是我的相关代码:

char buffer3[2];
buffer3[0]='Z';
buffer3[1]='\0';

//open
filed=open("common.txt", O_CREAT | O_APPEND, O_WRONLY);

//append
int result=write(filed, buffer3, 2);

if(result==-1){
    cout << "WRITE FAILED!" << endl;
}else{
    cout << "WRITE SUCCEEDED!" << endl;
}

//close
close(filed);

write()继续返回-1。我为write()的第三个参数尝试了1,2和3的值,但这也没有用。也许我的open()标志不正确。

1 个答案:

答案 0 :(得分:4)

您错误地使用了open()。应该更像这样:

open("common.txt", O_CREAT | O_APPEND | O_WRONLY, 0666);

您缺少创建文件时必需的mode参数(省略它是未定义的行为!)。或者更确切地说,您将O_WRONLY作为模式传递,这是不正确的,并且您未能传递flags中的任何强制读/写标记。

当然,您需要添加open()实际上成功的检查。