注意:最初版本有一個複製和粘貼錯誤影響結果。現在修復。
在一個嘗試,看看基礎上,我寫了
#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