关于Fork()的问题

时间:2011-04-18 12:25:15

标签: c process fork

当父进程使用fork()创建子进程时,根据我的说法, 子进程处于Running状态,而父进程处于Ready状态,即等待子进程结束。

我是对的吗?

2 个答案:

答案 0 :(得分:3)

不,fork会创建父级的副本。

然后你通常测试fork的返回值,它表示0 =我是孩子,其他:我是父,孩子的返回值是PID

如果父母必须等待孩子结束,则需要使用等待功能。

修改

请参阅http://linux.die.net/man/2/forkhttp://linux.die.net/man/2/wait了解C中的fork()。

答案 1 :(得分:0)

这是来自

的内容
  

在fork()之后,它是不确定的   哪个过程 - 父母或者   child-next可以访问CPU。

     

隐式或   明确地依赖于特定的   执行顺序以便   达到正确的结果是开放的   由于竞争条件而失败。

它继续指出不同内核中的不同行为。最重要的是,它是实现定义的,不能依赖它。

此外,如果你想要依赖它,那么在2.6.32以后的Linux上“那里有一个sysctl

kernel.sched_child_runs_first

干杯