When running the fork
call to create a new process, if it succeed it returns either 0
(the child) or the parent.
I didn't get the idea behind this. Why doesn't fork
just always return child
or always parent
?
forkprocess
When running the fork
call to create a new process, if it succeed it returns either 0
(the child) or the parent.
I didn't get the idea behind this. Why doesn't fork
just always return child
or always parent
?
Best Answer
When you
fork()
, the code that’s running finds itself running in two processes (assuming the fork is successful): one process is the parent, the other the child.fork()
returns 0 in the child process, and the child pid in the parent process: it’s entirely deterministic.This is how you can determine, after the
fork()
, whether you’re running in the parent or the child. (And also how the parent knows the child pid — it needs to wait on it at some point.)In a little more detail:
fork()
;fork()
returns 0 to the child process, which continues and uses that information to determine that it’s the child;fork()
returns the child pid to the parent process, which continues and uses that information to determine that it’s the parent.