fork() || fork() || fork() 与 fork() fork() fork()
生活随笔
收集整理的這篇文章主要介紹了
fork() || fork() || fork() 与 fork() fork() fork()
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先來看fork() || fork() || fork()
#include<stdio.h>
#include<unistd.h>
#include<assert.h>int main()
{fork() || fork() || fork();printf("A\n");
}
//這個輸出多少個A呢
首先主進程?fork() || fork() || fork();?
最左邊的fork()給個返回值 這個返回值是子進程的進程ID 這個ID具體不重要? 反正大于零?
然后根據? "||" 這個的原則? 右邊兩個fork()不執行?
到了第一個子進程之后? 第一個fork()的返回值(也就是子進程ID)是等于零的? ? 打印一個A
然后第二個子進程? ?fork() || fork() || fork();? 執行第二個fork()?,? 打印一個A
執行之后? 到了第三個子進程? ?第一個第二個fork()返回值都是零?
到?fork() || fork() || fork();?
這個fork()之后? ?三個fork()返回值都變成了0? 程序結束
再加上父進程中的一個A
父進程----->子進程------->子進程------>子進程
所以總共打印四個A
再來看這個:?fork() && fork() && fork()
#include<stdio.h>
#include<unistd.h>
#include<assert.h>int main()
{fork() && fork() && fork();printf("A\n");
}
//這個輸出多少個A呢
這個其實比fork() || fork() || fork(); 要簡單些? 因為"&&"要想通過? 必須全部大于零??
相當于主進程一下復制了三份? 家伙是那個父進程 總共四個進程? 打印四個A
“&&”因為這個的特性? 所以到了子進程中子進程的進程ID等于零? 所以子進程不能再進行復制了?
“圓規為什么能畫圓,因為心不動,腳在動;為什么你不能圓夢,因為心在動,腳不動”
總結
以上是生活随笔為你收集整理的fork() || fork() || fork() 与 fork() fork() fork()的全部內容,希望文章能夠幫你解決所遇到的問題。