编写一个创建子进程的程序。父进程应该显示父进程和子进程的PID?

时间:2016-02-24 13:23:32

标签: c unix

问题:

  

编写一个创建子进程的程序。父进程应该显示父进程和子进程的PID。子进程还应该显示父进程和子进程的pid?

我有点困惑如何解决这个问题。这是我试过的。谁能纠正我的错误?我想知道如何显示父ID和子ID。另外,如何显示子ID和父ID进程?我是操作系统的新手,所以这是我的讲师要求我们尝试的。

label B "XXXX", C "XXXX"

2 个答案:

答案 0 :(得分:3)

  • 你的格式不好。
  • 您必须声明status才能使用它。
  • 您应该sys/wait.h使用wait()
  • 您应该stdlib.h使用exit()
  • 父进程的fork()的返回值是子进程创建的pid,所以只需打印它。
  • getppid()对于了解父母的pid非常有用。

应用这些点的代码:

#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{

  int pid = fork();

  if(pid == -1)
  {
    printf("fork() failed\n");
  }

  else if(pid == 0)
  {
    printf("I am the child process and pid is %d! \n",(int)getpid());
    printf("pid of parent is %d\n", (int)getppid());
  }

  else
  {
    int status;
    wait(&status);
    printf("\n Hello I am the parent process ");
    printf("\n My actual pid is %d, pid of my child is %d\n ",(int)getpid(), pid);
    exit(1);
  }

  return 0;

}

答案 1 :(得分:0)

在child中使用getppid()来获取父ID,并在父级中返回fork的值以获取子ID。处理案例fork可能会返回-1。