zoukankan      html  css  js  c++  java
  • 每次调用fork()函数之后,父线程和创建出的子线程都是从fork()后开始执行

    Linux下多少个"-"将被打印:
    1
    2
    3
    4
    5
    6
    7
    8
    int main(void){
      int i;
      for(i=0;i<4;i++){
      fork();
      printf("- ");
     }
     return 0;
    }
    i=0时,主进程和其创建的子进程分别打印'-',  打印2个
    i=1时,之前两个进程打印'-', 每个进程又创建新的子进程, 共打印4个'-'
    i=2时,之前的四个进程分别打印'-', 并创建新的子进程, 故共打印8个'-'
    i=3时,之前的8个进程分别打印'-', 并创建新的子进程,故共打印16个'-'
    综上所述, 共打印2+4+8+16=30个
     
    每次调用fork()函数之后,父线程和创建出的子线程都是从fork()后开始执行,意味着父线程和子线程将分别执行一次printf。
     
    所以  1次 fork()调用  
    对应着 2次printf()调用 
    对应着 创建1个子线程
     
    i = 4时,一共创建了2^4-1个子线程,也就是有15次fork()调用, 所以调用了30次printf
    https://www.nowcoder.com/questionTerminal/9b52b1a86ae64daab81f609f3a86c02f
  • 相关阅读:
    poj 3258
    CodeForces 367E Sereja and Intervals
    Codeforces Round #240 (Div. 2) C Mashmokh and Numbers
    Codeforces Round #240 (Div. 2) D
    zoj 3768 Continuous Login
    2014/4/4做题感悟
    HDU 1878 欧拉回路
    HDU 3018 Ant Trip
    POJ 3694 Network
    Codeforces Round #239 (Div. 2)
  • 原文地址:https://www.cnblogs.com/findumars/p/5352536.html
Copyright © 2011-2022 走看看