任务和代码:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if(pid == 0) //在子进程中
{
printf("***my ID is = %d\n", getpid());
printf("***parent ID is= %d\n", getppid());
while(1);
}
else if(pid > 0) //在父进程中
{
printf("---my Id is= %d\n", getpid());
printf("---child ID is = %d\n", pid); //他的子进程是pid
//while(1); //不退出会产生僵尸进程
}
else
{
perror("fork");
return -1;
}
return 0;
}
运行结果:
心得:初步了解进程,多理解父进程与子进程的关系,他们是管理与被管理的关系,当父进程终止时,子进程也会随之终止,但子进程终止,父进程不一定终止,最原始的祖父进程是init,他的pid是1. 当父进程不为子进程收尸时候,祖父进程会领养子进程