注意:最初版本有一个复制和粘贴错误影响结果。现在修复。
在一个尝试,看看基础上,我写了
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[]){
int fd1 = open("/etc/passwd",O_RDONLY);
int fd2 = open("/etc/passwd",O_RDONLY);
printf("%d %d\n",fd1,fd2);
printf("FD1 position = %d\n", lseek(fd1,0,SEEK_CUR));
printf("FD2 position = %d\n", lseek(fd2,0,SEEK_END));
printf("FD1 position = %d\n", lseek(fd1,0,SEEK_CUR));
}
这在我的Mac OS 10.5箱和一些对科学的Linux机器在功能上相同,则返回
$ ./a.out
3 4
FD1 position = 0
FD2 position = 2888
FD1 position = 0
(区别仅在大小为/etc/passwd
)。
你会注意到你回来的数字不同fd
s,他们每个人都有自己的位置光标。
为什么不简单地测试它? – koopajah 2013-02-14 16:13:53
@koopajah:因为在一个系统上的行为并不一定告诉你它是如何*一般行为。当然,这是值得尝试的,但是测试的结果并不是确定性的。 – 2013-02-14 16:54:30