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