2015-10-15 82 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