如何在vfork函数中了解父或子进程

时间:2014-03-19 17:28:23

标签: c fork ipc vfork

我想知道我们是否使用vfork,我们如何知道子进程或父进程,因为资源是共享的。 更具体地说,假设以下代码:

int main()
{
    int pid = vfork();
    if(pid == 0)
    {
       // code for child
     }
    else 
    {
       // code for parent
    }
    return 0;

}

在上面的代码中,如果资源是共享的,那么pid变量将具有uniqe值,那么这段代码是否有效?因为我已经看过像上面代码做的事情。

3 个答案:

答案 0 :(得分:2)

vfork()暂停家长,直到孩子拨打exec*()_exit()

在我们使用vfork()时使用此格式的fork()会导致程序在无限循环中运行。它没有结束 阅读此discussion以更好地了解如何使用vfork()

答案 1 :(得分:0)

在vfork中,父母将等待孩子完成,因此无需区分。

答案 2 :(得分:0)

  

此代码有效吗?

是。 vfork()仍然会创建父进程的副本(概念上),并且作为普通fork(),在子进程中它将在父进程中返回0,该子进程的pid。