将PID从孩子转移到父母

pass back the pid from child to parent

本文关键字:父母 转移 孩子 PID      更新时间:2023-10-16

我正在编写一个C 程序,该程序允许在后台运行多个程序,并同时进行mangament。

它假设打印一条消息,即某些背景程序已经完成。由于我无法在子过程中直接打印完成填充味精,因此我尝试使用parent中的wait((来打印它,但我无法获得孩子的pid,所以输出sg是错误的。

有什么方法让我得到孩子pid并由父母打印?

if(cmdline=="bg"){//bg
  pid=fork();
  if (pid == 0){ // child process
    char * parmList[] = {"demo","running","2","3",NULL};
    execvp(parmList[0],parmList);
    exit (EXIT_FAILURE);
  }
  else if (pid > 0){// preant
        pidStack.push_back(pid);
        nameStack.push_back(argTemp[0]);
        wait(&status);
        cout << getpid() << " completed" << endl;
  }   

  else { // fork failed
    printf("fork () failed!n");
    exit (EXIT_FAILURE);
  }
 }

您缺少 fork的返回值点。孩子pid!

您当前正在父母中打印getpid,但这当然是Parent Pid。