【问题标题】:how can i create two child processes, each runs a different program in c我如何创建两个子进程,每个子进程在 c 中运行不同的程序
【发布时间】:2018-03-12 23:23:15
【问题描述】:

我正在尝试通过 c 中的父进程创建 2 个子进程,每个子进程运行不同的程序?

如何更改此代码以让每个进程运行 execution1()execution2()

void execution1(char *argve[]);
void execution2(char *argve[]);

int main(int argc, char *argv[], char *argve[]) {
  pid_t pid[2];
  int i;

  /* Creation du processus fils */
for(i=0; i < 2; ++i){
  if((pid[i] = fork()) == -1) {
    perror("Erreur lors de la creation du fils ");
    exit(EXIT_FAILURE);
  }
  if(pid[i] == 0)
    execution1(argve);
   //execution2(argve); how can i let only the 2nd child run this line
}
  /* Attente de la fin de l'execution du fils */
  printf("Attente de la fin du fils...\n");
  if(waitpid(pid, NULL, 0) == -1) {
    perror("Erreur lors de l'attente de la fin du processus ");
    exit(EXIT_FAILURE);
  }
  printf("C'est bon !\n");

  return EXIT_SUCCESS;
}

【问题讨论】:

    标签: c fork parent-child pid


    【解决方案1】:

    您是否考虑过为此使用i?如果i为0,则执行execution1,如果i为1,则执行execution2

    for(i=0; i < 2; ++i)
    {
        if((pid[i] = fork()) == -1) {
            perror("Erreur lors de la creation du fils ");
            exit(EXIT_FAILURE);
        }
    
        if(pid[i] == 0)
        {
            if(i == 0)
                execution1(argve);
            else
                execution2(argve);
    
            // exiting child
            exit(0);
        }
    
    }
    
    // waiting
    for(i=0; i < 2; ++i)
    {
        if(waitpid(pid[i], NULL, 0) == -1) {
            perror("Erreur lors de l'attente de la fin du processus ");
            exit(EXIT_FAILURE);
        }
    }
    

    【讨论】:

      【解决方案2】:

      我正在尝试通过 c 中的父进程创建 2 个子进程,每个子进程运行不同的程序?

      为此,您需要使用 fork-exec 方法。

      你 fork 一个子进程,然后用exec() 启动新程序,调用exec() 的子进程的整个内存映像将被你在exec() 中指定的程序创建的新进程的内存映像替换

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-20
        • 1970-01-01
        • 1970-01-01
        • 2020-07-30
        • 1970-01-01
        • 2014-05-11
        相关资源
        最近更新 更多