2015-10-15 93 views
0

我对此很好奇.. 我听到有人说fork()被调用时,其值被存储在变量p中,数据类型为pid_t,那么如果p中的值是 不能创建过程-1在 主要功能创建了0处理堆栈在内存 我没有看到任何这在互联网上分配自己的堆栈中创建 1的过程。 任何人都可以帮助我 谢谢在内存中创建叉和堆栈

回答

0

fork()创建一个新的独立进程,通过复制当前进程,在原始进程的位置执行。返回值-1意味着无法创建新进程。

如果返回值是正的,这意味着,这个过程是原始主并且返回值是新的过程的过程ID(PID)。在新流程中,fork()的返回值为0.这就是您可以在原始流程和新流程中采取不同操作的方式。

见,例如,http://linux.die.net/man/2/fork

+0

好吧,我得到了这一点,但我听到了我的教授说,当fork函数返回0则意味着一个新的进程被创建,其堆栈是主要的堆栈而当返回1新进程都有自己的堆栈,但我没有看到这互联网上的任何地方。那么这个陈述是真的吗?谢谢 – user5444075

+0

这两个进程都是完全独立的,并有自己的堆栈,但由于新进程是原始副本,紧跟在fork之后,新堆栈看起来就像原来的堆栈。但新进程的堆栈永远不在原来的堆栈中,它们的内存空间是完全独立的。 fork返回值总是告诉你你在哪个副本中,或者是否没有副本。 – ehaymore

+0

噢,我的上帝,这意味着我对外界的回答是完全错误的。因此,在创建进程时始终创建堆栈。 – user5444075