C++ 使用PID跟踪父进程并显示它';孩子和孙子

C++ 使用PID跟踪父进程并显示它';孩子和孙子,c++,linux,C++,Linux,我设法为每个进程输出正确的进程id顺序,但我的问题是我无法显示子进程的PID 我的程序能够打印父母的PID和孙子的PID。我确实看到了孩子的PID,但它显示为家长的PID 如何计算孩子的PID并将其添加到代码中?我希望输出显示父PID、子PID和孙子PID #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; int main() { pid\u t pid;//进程id const char*消息; int n; int-exit_码; cout您似乎没有在第二个fork()

我设法为每个进程输出正确的进程id顺序,但我的问题是我无法显示子进程的PID

我的程序能够打印父母的PID和孙子的PID。我确实看到了孩子的PID,但它显示为家长的PID

如何计算孩子的PID并将其添加到代码中?我希望输出显示父PID、子PID和孙子PID

#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
pid\u t pid;//进程id
const char*消息;
int n;
int-exit_码;

cout您似乎没有在第二个fork()之前撬儿童PID

更改:

case 0:
   pid = fork();
    cout << "Parent PID = " << getppid() << endl;
    switch ( pid ) {
      case -1:
        cout << "Fork Failure!\n";
        return 1;
    [...]
    }
案例0:
pid=fork();

cout您似乎没有在第二个fork()之前撬儿童PID

更改:

case 0:
   pid = fork();
    cout << "Parent PID = " << getppid() << endl;
    switch ( pid ) {
      case -1:
        cout << "Fork Failure!\n";
        return 1;
    [...]
    }
案例0:
pid=fork();

cout在这里,就在第一行之后,打印getpid(),而不是稍后打印。然后使用pid2或不同的标识符,而不是使用相同的pid。这将解决所有问题

 case 0:
   pid = fork();
    cout << "Parent PID = " << getppid() << endl;
    switch ( pid ) {
    case -1:
      cout << "Fork Failure!\n";
      return 1;
  case 0:
    cout << "Grandchild finished: PID = " << getpid() << endl;//
案例0:
pid=fork();

cout在这里,就在第一行之后,打印getpid(),而不是稍后打印。然后使用pid2或不同的标识符,而不是使用相同的pid。这将解决所有问题

 case 0:
   pid = fork();
    cout << "Parent PID = " << getppid() << endl;
    switch ( pid ) {
    case -1:
      cout << "Fork Failure!\n";
      return 1;
  case 0:
    cout << "Grandchild finished: PID = " << getpid() << endl;//
案例0:
pid=fork();
库特