我已經編寫了下面的代碼來檢查兩個進程,讓我們稱它們爲pid1和pid2與它們各自的文件描述符共享相同的進程。檢查資源是否被不同的進程共享
1)我在我的第一個過程中打開一個文件。 2)存儲文件描述符。 3)貨叉 4)打開同一個文件中的子進程 5)使用KCMP檢查
fd1 = open("test", O_RDWR | O_TRUNC | O_CREAT, 0600);
pid1 = getpid();
pid2 = fork();
if (!pid2) {
pid2 = getpid();
fd2 = open("test", O_RDWR | O_TRUNC);
i = kcmp(pid1, pid2, 0, fd1, fd2);
printf("%d\n", i);
}
else
{
int status;
int s;
while ((s = wait(&status)) > 0);
}
要進行檢查,我使用系統調用KCMP旗KCMP_FILE(相當於0)。但系統調用總是返回1或2而不是0.
預期的結果爲0,因爲這兩個進程與它們的文件描述符共享相同的資源。
我誤解了手冊頁或者我做錯了什麼檢查?