无法"打开"文件,但`lseek`完成没有错误

use*_*399 1 c c++ unix

我正在努力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);

} 
Run Code Online (Sandbox Code Playgroud)

我的输出是:

   problem in openning file 
   seek ok
Run Code Online (Sandbox Code Playgroud)

我的问题是:

1)为什么open系统调用给我负面文件描述符?(我已经确定testfile.txt文件在同一目录下)

2)这里我无法打开文件(因为open()返回我的负文件描述符),如何lseek在不打开文件的情况下成功?

Lid*_*Guo 6

实际上,您已成功打开文件.

只是if(fd < 0 );错了,你需要删除;