對大多數人來說,看起來可能是幼稚的,但我無法理解這段小小的代碼。爲什麼輸出打印兩次?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(int argc, char** argv) {
int i, pid;
pid = fork();
printf("Forking the pid: %d\n",pid);
for(i =0; i<5; i++)
printf("%d %d\n", i,getpid());
if(pid)
wait(NULL);
return (0);
}
停止把這個程序的是
Forking the pid: 2223
0 2221
1 2221
2 2221
3 2221
4 2221
Forking the pid: 0
0 2223
1 2223
2 2223
3 2223
4 2223
Press [Enter] to close the terminal ...
在for循環printf命令被使用一次。爲什麼「分叉pid」,然後再打印兩次pid。這是如何工作的?有人可以解釋我嗎?提前致謝。 有人可以解釋我爲什麼要在這裏等待嗎?我從手冊頁中瞭解到的是等待將控制權轉回到父進程?我所理解的是正確的嗎?分流後是否需要等待? 操作系統:ubuntu,編譯器:gcc,IDE:netbeans
呃......但那正是叉子的功能!你分叉了這個過程以及fork完成兩次後的所有事情,因爲現在你有兩個*進程!你基本上是問爲什麼'叉'叉! – AnT 2010-09-29 14:48:37
[此C代碼可以做什麼?]可能的重複(http://stackoverflow.com/questions/3730429/what-does-this-c-code-do) – 2010-09-29 14:49:52
它不是任何其他問題的重複,但可能是您提供的鏈接將幫助我進一步瞭解分叉。 – narayanpatra 2010-09-29 15:12:59