我們都知道,父進程fork()之后返回值為子進程的pid號,而子進程fork()之后的返回值為0。那么,現在就有一個問題了,子進程fork()的返回值是怎么來的?如果子進程又執行了一遍fork()函數,那么,按着完全復制的效果,父進程應該還會再fork()一次才對啊。
其實,在fork()函數執行中,返回值是存放在寄存器eax中的,在子進程中fork()的結尾處,把eax置為0就可以啦。這樣,就造成一種子進程也完整運行一次fork()的“假象”
我們都知道,父進程fork()之后返回值為子進程的pid號,而子進程fork()之后的返回值為0。那么,現在就有一個問題了,子進程fork()的返回值是怎么來的?如果子進程又執行了一遍fork()函數,那么,按着完全復制的效果,父進程應該還會再fork()一次才對啊。
其實,在fork()函數執行中,返回值是存放在寄存器eax中的,在子進程中fork()的結尾處,把eax置為0就可以啦。這樣,就造成一種子進程也完整運行一次fork()的“假象”
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。