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

标签 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;
}

最佳答案

您是否考虑过使用 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);
    }
}

关于c - 我如何创建两个子进程,每个子进程在c中运行不同的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49245923/

相关文章:

c++ - 为什么当左侧操作数为负值时,左移操作会调用未定义行为?

c - 使用 -D 引用宏预处理器

android - 强制 View 至少占据其父级高度的一定百分比

javascript - 删除具有某个类的所有元素,直到到达下一个元素

css - 当父元素具有不同的不透明度时,如何使子元素的不透明度为 100%?

c - 为什么在放入#include <stdio.h> 后仍无法识别 FILE? (c语言)

c - 递归函数比较没有库函数的字符串

C++ 管道和 fork

node.js - 从父进程派生/生成许多 Node.js 进程的最高性能方法

c - 线程和 fork