π νκ°μ fork()κ° μ€νλ λ
- μμ£Ό μλͺ νκ²λ 2κ°μ νλ‘μΈμ€λ‘ λΆκΈ°νλ€.
ππ κ·Έλ λ€λ©΄ μ¬λ¬κ°μΌλλ?
pid_t pid = fork(); // fork #1 pid = fork(); // fork #2 pid = fork(); // fork #3 if (pid == 0) { fork(); // fork #4 } fork(); // fork #5
π μ μμ€μ½λμμλ μ΄ 5λ²μ fork()κ° μ€νλλ€.
- fork #1μμ 2κ°λ‘ λΆκΈ°λλ€.
- fork #2 2κ°μ νλ‘μΈμ€κ° κ°κ° 2κ°λ‘ λΆκΈ°νμ¬ μ΄ 4κ°κ° λλ€.
- fork #3 4κ°μ νλ‘μΈμ€κ° κ°κ° 2κ°λ‘ λΆκΈ°νμ¬ μ΄ 8κ°κ° λλ€.
- fork #4 8κ°μ νλ‘μΈμ€ μ€ μ λ°μΈ 4κ°μ μμ νλ‘μΈμ€λ§μ΄ κ°κ° 2κ°λ‘ λΆκΈ°νμ¬ μ΄ 12κ°κ° λλ€.
- fork #5 12κ°μ νλ‘μΈμ€κ° κ°κ° 2κ°λ‘ λΆκΈ°νμ¬ 24κ°κ° λλ€.
π μ§μ ν΄λ³΄κΈ°
for(int i=0; i<4; i++) fork();
μ μμ€μ½λλ λͺκ°μ νλ‘μΈμ€λ₯Ό λ§λ€κΉ?
π€ κ²°κ³Ό
μ΄ λ€ λ²μ fork()κ° μ§νλλ€.
- fork #1 2κ°μ νλ‘μΈμ€λ‘ λΆκΈ°νλ€.
- fork #2 2κ°μ νλ‘μΈμ€κ° κ°κ° 2κ°λ‘ λΆκΈ°νμ¬ μ΄ λ€ κ°κ° λλ€.
- fork #3 4κ°μ νλ‘μΈμ€κ° κ°κ° 2κ°λ‘ λΆκΈ°νμ¬ μ΄ μ¬λκ°κ° λλ€.
- fork #4 8κ°μ νλ‘μΈμ€κ° κ°κ° 2κ°λ‘ λΆκΈ°νμ¬ μ΄ μ΄μ¬μ―κ°κ° λλ€.