[英]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.