【问题标题】:C creating processes with Fork()C 使用 Fork() 创建进程
【发布时间】:2021-07-09 00:14:52
【问题描述】:
  int main()
{
     int i;
     int status;

     for (i = 0; i < 4; i++) {
         if(fork() == 0){
             sleep(1);
         }
     }

     printf("This is the end.\n");
     
     return 0;
} 

我需要更改代码,以便创建 4 个子进程。我已经尝试了一些方法,但我不知道该怎么做。

【问题讨论】:

  • sleep之后添加return 0exit(0)
  • 记住:当您使用fork() 克隆自己时,您的程序会继续运行,就好像它不是克隆一样。您必须阻止您的克隆创建额外的克隆。
  • @ggorlen 我在循环中尝试了 exit(0),我没有想到 break,我还认为我需要使用 status 变量来完成它,所以我尝试将 fork 返回到 status 和用它做某事。

标签: c linux process fork


【解决方案1】:

您必须阻止子进程创建新的子进程。为此,只需在子进程中退出循环即可。

for (i = 0; i < 4; i++) {
    if(fork() == 0) {
        // Only the child process will execute this
        sleep(1);
        break;
    }
}

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多