如何寫一個concurrent server?我們可以使用fork這個function來達成,定義於"unistd.h",用法如下:
pid_t fork(void);
呼叫fork()會產生一個child process,在呼叫fork()指令之前所有parent process開啟的descriptors會與child processs共享。至於如何分辨parent還是child,則依呼叫fork()後的回傳值決定,parent會收到child的Process ID,而child則會收到0。因為,兒子只有一個父親,只要呼叫getppid即可取得父親的PID,而父親可能會有很多的兒子,所以需要記錄每一個兒子的PID。
fork有兩種使用方法:
- Process複製自己一份,讓其中一個處理某一個運算,另一個則是做其它事。
- Process想執行其它程式,當呼叫fork時會複製一份child process,然後child process執行exec用新程式來取代目前的程式。
0 意見:
張貼留言