当前位置: 技术问答>linux和unix
请问一个lseek的问题?
来源: 互联网 发布时间:2017-03-11
本文导语: 用eclipse在cygwin中使用如下的代码: lseek(file,0,SEEK_END); 发现返回值为-1 errno为2 说是文件不存在 但是file是我前一步生成的,而且文件也没有被删除,请问是什么原因? 谢谢! | O_EXCL 和O_CREAT ...
用eclipse在cygwin中使用如下的代码:
lseek(file,0,SEEK_END);
发现返回值为-1
errno为2
说是文件不存在
但是file是我前一步生成的,而且文件也没有被删除,请问是什么原因?
谢谢!
lseek(file,0,SEEK_END);
发现返回值为-1
errno为2
说是文件不存在
但是file是我前一步生成的,而且文件也没有被删除,请问是什么原因?
谢谢!
|
O_EXCL 和O_CREAT 同时使用时,检查文件是否存在,文件若不存在则建立该文件,否则将导致打开文件错误。
按理第一次运行不会出现错误,除非楼主的这个tmp123已经存在,你可以在open之后判断open的返回值就知道了
按理第一次运行不会出现错误,除非楼主的这个tmp123已经存在,你可以在open之后判断open的返回值就知道了
|
file存在,但是lseek前你需要open它,将返回的fd给lseek的第一个参数
|
我自己机器上写的lseek没问题,楼主可否贴上代码
|
open没见过这个参数O_BINARY ,这个模式S_wRUSR
open后没判断是否打开成功
open后没判断是否打开成功
|
补充一点,我机器上运行没问题,还有O_BINARY,这个是木有的。
我是这样写的
我是这样写的
open("tmp123",O_RDWR | O_CREAT | O_EXCL | O_NOFOLLOW | 0600);
|
还有错误?楼主把open生成的文件删掉,然后再运行程序看看
|
tmp123
不是应该
/吗
不是应该
/吗