当前位置: 技术问答>linux和unix
求助一个关于lseek64的问题
来源: 互联网 发布时间:2016-12-23
本文导语: 系统是64位的redhat5.3,在执行以下代码的时候,正常情况下应该是会覆盖掉第一次写入的内容,文件大小应该是4字节。但是实际执行的过程中好像lseek64好像没起作用,test被写入了2次,文件大小是8字节。 不知道是什...
系统是64位的redhat5.3,在执行以下代码的时候,正常情况下应该是会覆盖掉第一次写入的内容,文件大小应该是4字节。但是实际执行的过程中好像lseek64好像没起作用,test被写入了2次,文件大小是8字节。
不知道是什么原因呢,请能懂的朋友帮忙看看吧,谢谢了!
不知道是什么原因呢,请能懂的朋友帮忙看看吧,谢谢了!
#include
#include
int main()
{
int hFile;
hFile = open64("testfile", O_RDWR|O_CREAT|O_APPEND|O_LARGEFILE|O_NONBLOCK,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
char *p = "test";
write(hFile, p, 4);
lseek64(hFile, 0, SEEK_SET);
write(hFile, p, 4);
return 0;
}
|
open参数有问题。
hFile = open64("testfile", O_RDWR|O_CREAT|O_APPEND|O_LARGEFILE|O_NONBLOCK,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
改成hFile = open64("testfile", O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE|O_NONBLOCK,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
hFile = open64("testfile", O_RDWR|O_CREAT|O_APPEND|O_LARGEFILE|O_NONBLOCK,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
改成hFile = open64("testfile", O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE|O_NONBLOCK,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
去掉O_APPEND。