Linux下fork()函数
生活随笔
收集整理的這篇文章主要介紹了
Linux下fork()函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Linux下的fork()函數(shù)是系統(tǒng)調(diào)用不是C語言內(nèi)置的庫函數(shù),這里mark一下筆試面試中常出現(xiàn)的fork()試題。
程序一:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i = 0;for(i = 0; i < 2; i++){fork();printf("+");}return 0;}結(jié)果中輸出8個“+”。
程序二:
程序三:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i = 0;for(i = 0; i < 1; i++){fork();printf("+\n"); //注意"\n" }return 0;} 結(jié)果中輸出2個“+”。程序四
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i = 0;for(i = 0; i < 1; i++){fork();printf("+");}return 0;} 結(jié)果中輸出2個“+”。程序五:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();fork();fork();printf("+\n"); //注意“\n”return 0;}結(jié)果中輸出8個“+”。程序六:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();fork();fork();printf("+"); return 0;} 結(jié)果中輸出8個“+”。
程序七:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();fork();printf("+\n"); //注意"\n"return 0;} 結(jié)果中輸出4個“+”。程序八:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();fork();printf("+");return 0;}結(jié)果中輸出4個“+”。
程序九:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();printf("+");return 0;} 結(jié)果中輸出2個“+”。程序十:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();printf("+\n");return 0;}結(jié)果中輸出2個“+”。
程序十一:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();fork();fork();fork();printf("+\n");return 0;}結(jié)果中輸出16個“+”。
程序十二:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();fork();fork();fork();printf("+");return 0;}結(jié)果中輸出16個“+”。
程序十三:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();fork();fork();fork();fork();printf("+");return 0;} 結(jié)果中輸出32個“+”。程序十四:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {fork();fork();fork();fork();fork();printf("+\n");return 0;}結(jié)果中輸出32個“+”。程序十五:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i = 0;for(i = 0; i < 3; i++){fork();printf("+");}return 0;} 結(jié)果中輸出24個“+”。程序十六:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i = 0;for(i = 0; i < 3; i++){fork();printf("+\n");}return 0;}結(jié)果中輸出14個“+”。
程序十七:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i = 0;for(i = 0; i < 4; i++){fork();printf("+");}return 0;} 結(jié)果中輸出64個“+”。程序十八:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i = 0;for(i = 0; i < 4; i++){fork();printf("+\n");}return 0;}結(jié)果中輸出64個“+”。
程序十九:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i = 0;for(i = 0; i < 5; i++){fork();printf("+");}return 0;} 結(jié)果中輸出120個“+”。
程序二十:
#include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i = 0;for(i = 0; i < 5; i++){fork();printf("+\n");}return 0;} 結(jié)果中輸出145個“+”。
------------------------------------優(yōu)雅的分割線------------------------------------
上面的fork()試題分為兩種。其中一種結(jié)合for循環(huán)使用,另一種不結(jié)合for循環(huán)使用。
當不結(jié)合for循環(huán)使用時,“\n" cout cerr fflush(stdout)等刷新緩沖區(qū)的操作不影響"+"的統(tǒng)計結(jié)果。當fork()的個數(shù)為n個時,結(jié)果中輸出"+"的個數(shù)為2^n個。
而當結(jié)合for循環(huán)使用時,“\n" cout cerr fflush(stdout)等刷新緩沖區(qū)的操作會影響"+"的統(tǒng)計結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的Linux下fork()函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab之M程序与M函数
- 下一篇: 关于Linux命令ls的一道笔试题