【发布时间】:2013-09-04 14:33:33
【问题描述】:
我正在处理unix system calls。
在我的代码中,我想open 文件并对该文件执行lseek 操作。
请查看以下代码。
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
int fd;
fd = open("testfile.txt", O_RDONLY);
if(fd < 0 );
printf("problem in openning file \n");
if(lseek(fd,0,SEEK_CUR) == -1)
printf("cant seek\n");
else
printf("seek ok\n");
exit(0);
}
我的输出是:
problem in openning file
seek ok
我的问题是:
1) 为什么open 系统调用给了我否定的文件描述符? (我已经确认 testfile.txt 文件在同一目录中)
2)这里我无法打开文件(因为open()返回负文件描述符),lseek如何不打开文件成功?
【问题讨论】:
-
if(fd < 0 ); -
整个前提是有缺陷的。由于多余的分号而出错。
-
你只是假设文件描述符是负的。如您所见,没有证明的假设是危险的。 ;-)