我已经编写了下面的代码来检查两个进程,让我们称它们为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,因为这两个进程与它们的文件描述符共享相同的资源。
我误解了手册页或者我做错了什么检查?