问题:
编写一个创建子进程的程序。父进程应该显示父进程和子进程的PID。子进程还应该显示父进程和子进程的pid?
我有点困惑如何解决这个问题。这是我试过的。谁能纠正我的错误?我想知道如何显示父ID和子ID。另外,如何显示子ID和父ID进程?我是操作系统的新手,所以这是我的讲师要求我们尝试的。
label B "XXXX", C "XXXX"
答案 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。