我如何创建两个子进程,每个进程在c中运行一个不同的程序

时间:2018-03-12 23:23:15

标签: c fork parent-child pid

我试图通过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;
}

2 个答案:

答案 0 :(得分:0)

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

execution2

答案 1 :(得分:0)

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

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

您分叉一个孩子,然后使用exec()启动新程序,调用exec()的子进程的整个内存映像将替换为您在{{1}中指定的程序创建的新进程的内存映像}}