linux中的fork函数详解
在fork函數執行完畢后,如果創建新進程成功,則出現兩個進程,一個是子進程,一個是父進程。在子進程中,fork函數返回0,在父進程中,fork返回新創建子進程的進程ID。我們可以通過fork返回的值來判斷當前進程是子進程還是父進程。fork調用的一個奇妙之處就是它僅僅被調用一次,卻能夠返回兩次,它可能有三種不同的返回值:
? ? 1)在父進程中,fork返回新創建子進程的進程ID;
? ? 2)在子進程中,fork返回0;
? ? 3)如果出現錯誤,fork返回一個負值;
運行結果是:
? ? i am the child process, my process id is 5574
? ? 我是爹的兒子
? ? 統計結果是: 1
? ? i am the parent process, my process id is 5573
? ? 我是孩子他爹
? ? 統計結果是: 1?
/***************************************************************************************************************************************/?
一個FORK的面試題
例子1:
答案:8
解析1:
fork()系統調用的特性,
fork()系統調用是Unix下以自身進程創建子進程的系統調用,一次調用,兩次返回,如果返回是0,則是子進程,如果返回值>0,則是父進程(返回值是子進程的pid),這是眾為周知的。
還有一個很重要的東西是,在fork()的調用處,整個父進程空間會原模原樣地復制到子進程中,包括指令,變量值,程序調用棧,環境變量,緩沖區,等等。
?
?
解析2:
總結
以上是生活随笔為你收集整理的linux中的fork函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本题主要考查指针与数组
- 下一篇: C语言问题,在位运算中,操作数每右移一位