在c中创建具有不同子进程的n父进程

标签 c fork

我正在尝试编写一个 C 程序来创建 N 父进程及其子进程,但实际发生的情况是我创建了多个链接到父进程的子进程。我需要帮助更改代码以创建与 child 一样多的 parent 。此外,程序将等待所有子进程。感谢您的帮助!下面你可以看到我的代码,其中肯定需要更改。

int main(void)
{
  pid_t pid;
  int i, N=0;
  scanf("%d", &N);
  for(i=0;i<N;i++)
{
  pid = fork();
  switch(pid) {
   case -1:
   fprintf(stderr,"fork failed");
   exit (1);

   case 0:
    printf("I am the child with pid = %d\n",getpid());
    printf("My parent has pid = %d\n", getppid());
    sleep (20);
    exit(0);

   default:
    wait (0);
   }
 }
 return 0; 

}

最佳答案

您缺少对父进程和子进程的基本理解。我会尽力帮助您解决这个问题,并且我相信您将能够自己纠正您的程序。

除了“init”进程之外,每个进程都有一个父进程。您想要创建 N 个父进程,但这 N 个进程必须有一个父进程,直到它们不是“init”进程,并且您不能有多个“init”进程。

在您的情况下,“main”应该是您的 N 个父进程的父进程(它们只不过是“main”进程的子进程),然后这 N 个父进程可以拥有它们的子进程。

我希望这些信息有帮助。快乐编码:)

关于在c中创建具有不同子进程的n父进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48752495/

相关文章:

将 char 数组转换为整数值并添加它们

C 宏将函数名称与预定义的名称列表进行比较

c - 通过管道转发时,递归进程树输出不同

Linux:如何 'fork' 不在新终端窗口中执行新进程?

c - Fork(),等待所有子进程完成 vs 等待一个子进程完成

c++ - 使用 Xlib 更改绘图颜色

TA-Lib 的 Python 包装器 : Import Failure

c - 为什么这个程序打印 "forked!"4 次?

c - 整数验证输出

c - fork() 和 pthread_create 对 VSZ 的影响