1

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

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

}

在上面的代码中,如果资源是共享的,那么 pid 变量将具有 uniqe 值,那么这段代码是否有效?,因为我已经看到示例按照上述代码执行操作。

4

3 回答 3

2

vfork()挂起父级,直到子级调用exec*()_exit()

使用vfork()这种格式,因为我们使用fork()会导致程序在无限循环中运行。它没有结束。
阅读此讨论以更好地了解使用vfork().

于 2014-03-19T17:34:41.047 回答
0

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

于 2014-03-19T17:31:33.143 回答
0

这个代码有效吗?

是的。vfork()仍然会复制父进程(概念上),并且像往常一样fork(),在子进程中它将返回 0,在父进程中该子进程的 pid。

于 2014-03-19T17:42:33.853 回答