我一直在學習過去幾天的fork()函數,並且一直在做一些實驗來知道它是如何工作的。在這樣做的時候,我找到了一些我不瞭解的有趣代碼。下面是代碼:fork()的輸出混亂
int main(int argc, char *argv[])
{
int p,m;
p = getppid();
printf("%d\n",p);
if(fork() == 0) {
p = getppid();
printf("%d\n",p);
}
if(fork() == 0) {
p = getppid();
printf("%d\n",p);
}
if(fork() == 0) {
p = getppid();
printf("%d\n",p);
}
if(fork() == 0) {
p = getppid();
printf("%d\n",p);
}
return 0;
}
的輸出是這樣的:
$./a.out
6117
6460
1
[email protected]:~/forkbomb$ 1
1
1
1
1
1
1
1
1
1
1
1
6473
這將是非常好的你,如果你爲什麼初始化爲1出現在輸出的PID給我解釋一下。 如果有幫助,我想澄清一下,我試圖從給定的一個創建5個進程。那麼你能告訴我正確的方法嗎? 謝謝
對於初學者,您*不*創建5個過程。我認爲你正在創建16個進程。由於您不在父母身邊等待孩子,所以孩子被初次接受,因此ppid 1。 –