pid = fork();
if (pid == 0) {
for (i=0;i<44;i++) {
printf(" I am a child process I say %d\n",i);
sleep(1);
}
exit(1);
}
else if (pid > 0) {
for (i=0;i<40;i++) {
printf(" I am a parent process I say %d\n",i);
sleep(1);
}
}
else if (pid < 0)
printf(" Sorry .....I can't fork my self\n");
}
解釋一下 fork() 是怎麼動作的:
原來的 process
+---------+
| Data |
+---------+
| Code |---> PC
+---------+
執行 fork() 之後
原來的 process fork 出來的 process
+----------+ 複製 Data Code 到 +----------+
| Data | ===================> | Data |
+----------+ +----------+
| Code |---> CP = CP+1; | Code |----> CP = CP+1
+----------+ +----------+
由上圖可以看出原來的 process 和 fork 出來的 process 不論是變數、程式碼都是一模一樣的,唯一不同的是 fork() 的返回值,parent process 的返回值是 child process 的 PID ,而 child process 的返回值是 0 ,因此在程式實作上就以 fork() 的返回值來判斷那一個是 parent 那一個是 child 。