gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:13 25 4
gpt4 key购买 nike

#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 到 SEEK_END 然后 fputs 到文件或类似的东西的情况下追加它?

最佳答案

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

关于c - 是否可以在以 O_APPEND 模式打开的文件中使用 write() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com