分叉并返回两次

use*_*690 4 c unix openbsd fork freebsd

我正在开发一个需要在 unix 中实现 fork() 的项目。我读过 freeBSD 和 openBSD 源代码,但确实很难理解。有人可以解释一下返回两次的概念吗?我知道一个返回是子进程的 pid,它返回到父进程,另一个返回为零,它返回到子进程。但我无法理解如何实现返回两次的概念......我怎样才能返回两次?预先感谢大家。

Bor*_*lid 5

当您调用 时fork,它会返回“两次”,因为 fork 会生成两个进程,每个进程都会返回。

因此,如果您正在实施fork,则必须创建第二个进程而不结束第一个进程。那么两次返回行为就会自然发生:两个不同的进程中的每一个都将继续执行,只是它们返回的不同(子进程给出零,父进程给出子进程的 PID)。