|
发表于 2010-5-20 08:35:08
|
显示全部楼层
Post by pdaliu;2091127
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
int fd;
char buf_write[10]="abcdefghi";
fd=open("/home/skiron/test",O_RDWR, O_APPEND);
if (write(fd, buf_write, 10)!=10)
printf("Error\n");
return 0;
}
在这个程序中test文件已经存在了,并写了一些东西在里面。
我以追加形式打开了它,但是在write时还是会覆盖文件开头的10个字节。这是为什么? open用法错了,改为"open=("/home/skiron/test", O_RDWR | O_APPEND, 0);"
O_APPEND和O_CREAT这些应该是在第二个参数或使用的。第三个参数是设置新文件权限的,只有当第二个参数中或有"O_CREAT"时才有意义 |
|