c - fork() 的执行顺序?

标签 c linux gcc linux-kernel

int main () { 

    fork ();     
    fork ();     
    fork (); 

    pf (" hi\n"); 

} 

“hi”会打印多少次? fork() 的执行顺序是什么? 操作系统:linux 编译器:gcc

最佳答案

问题 1:“hi”会打印多少次?

                      Due to first Fork
                             |
                   -------------------------
                   |                        |
             Due to second fork         Due to second fork
                   |                          |
          ----------------------            ----------------------------
        |                      |            |                          |
  Due to 3rd fork        Due to 3rd fork   Due to 3rd fork             Due to 3rd fork
        |                      |                |                           |
------------------       ---------------       ----------               ------------
|               |        |             |      |          |               |          |
process-1     process-2   process-3   process-4 pr-5     pr-6         process-7    process-8

所以 如果所有 fork 进展顺利,则总共创建 8 个进程,因此输出中将有 8 个或更少的 hi

问题2:fork()的执行顺序是什么?操作系统:linux 编译器:gcc

无法保证哪个进程将首先被安排,哪个进程将被安排在第二个。 这一切都取决于调度程序。

关于c - fork() 的执行顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27839824/

相关文章:

java - 管道字符在 java 字符串中被跳过

linux - 我可以减少使用时间的套接字地址吗?

c - glibc的结构?

C++奇怪的指针运算

c - 在recvfrom 和socket 之后使用connect

C 语言的聊天客户端? (C网络编程)

python - 如何交叉编译Python?

c++ - gcc 的 std::bind 在哪里将参数复制到数据结构中?

c - 用户输入的数组元素之和的问题

php - 无法在 C 中的 PHP_FUNCTION() 中调用另一个函数