是否可以在使用O_APPEND模式打开的文件中使用write()?

时间:2014-01-23 17:31:11

标签: c file

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(){
    FILE * fp;
    char buf[128];
    int fd = open("/home/pdave/Downloads/ccode/fileout1",O_CREAT);
    printf("fd after creat:%d",fd);
    close(fd);
    fd = open("/home/pdave/Downloads/ccode/fileout1",O_APPEND);
    printf("fd after append:%d",fd);
    int more=1;
    int ret=0;
    while(more){
        puts("enter text:");
        scanf("%s",buf);
        puts(buf);
        ret=write(fd,buf,128);
        printf("ret:%d",ret);
        puts("more?");
        scanf("%d",&more);
    }
}

以上尝试将字符写入使用O_APPEND模式下的open函数打开的文件。它在使用O_WRONLY模式打开时有效,但在O_APPEND中打开时无效。如果不打开“w”,然后使用搜索SEEK_END然后fputs到文件或其他类似的内容,我如何附加到它?

1 个答案:

答案 0 :(得分:1)

使用O_WRONLY | O_APPEND,您仍需要文件访问模式。 (对于某些[大多数?]编译器,不包括文件访问标志将导致文件被视为只读,如果没有,则会出现EINVAL错误。)