您的位置:首页 > 移动开发

在使用O_APPEND 标志并以写打开一个已存在的文件,然后用lseek函数将偏移置于开头,在写入数据,写入的数据会显示在那个位置呢???

2015-10-30 15:49 375 查看
APLI第五章练习题第二题 在使用O_APPEND 标志并以写打开一个已存在的文件,然后用lseek函数将偏移置于开头,在写入数据,写入的数据会显示在那个位置呢???

直接编程做实验吧

#include<stdio.h>

#include<sys/stat.h>

#include<fcntl.h>

#include<stdlib.h>

#include<unistd.h>

#include<string.h>

int main(int argc ,char*argv[])

{

int fd;

if(argc!=2||strcmp(argv[1],"--help")==0)

{ printf("fild err");

exit(1);}

fd=open(argv[1],O_WRONLY|O_APPEND);

{if(fd<0)

exit(1);}

if(lseek(fd ,0,SEEK_SET)==-1)

printf("lseek fail\n");

else if(write(fd,"hello",5)==-1)

exit(1);

close(fd);

return 0;

}

提前新建一个文件ss内容为sss



执行程序,查看文件



发现写入的hello在文件的尾部!!!!!

这是为什么呢!! 以为用O_APPEND打开文件是原子操作,以后对文件的写操作只能从文件尾部写入!!!!

而对于读操作来说,lseek还是有效的!可以用lseek来读取你想读的内容!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: