int main(int argc, char* argv[])
{
fork();
fork() && fork() || fork();
fork();
printf("+/n");
}
答案是總共20個進程,除去main進程,還有19個進程。
我們再來仔細分析一下,爲什麼是還有19個進程。
第一個fork和最後一個fork肯定是會執行的。
主要在中間3個fork上,可以畫一個圖進行描述。
這裏就需要注意&&和||運算符。
A&&B,如果A=0,就沒有必要繼續執行&&B了;A非0,就需要繼續執行&&B。
A||B,如果A非0,就沒有必要繼續執行||B了,A=0,就需要繼續執行||B。
fork()對於父進程和子進程的返回值是不同的,按照上面的A&&B和A||B的分支進行畫圖,可以得出5個分支。
加上前面的fork和最後的fork,總共4*5=20個進程,除去main主進程,就是19個進程了。