繁体   English   中英

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

[英]Is it possible to use write() in file opened with O_APPEND mode?

#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到文件之类的东西?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM