目录
一、创建孤儿进程(rphan Process)
在操作系统领域中,孤儿进程指的是在其父进程执行完成或被终止后仍继续运行的一类进程。这些孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集作。
总代码:
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
int main(int argc, const char *argv[])
{
pid_t pid = fork();
if(pid > 0)
{
printf("this is parent ppid:%d child:%d\n",getpid(),pid);
sleep(1);
}else if(pid == 0){
while(1)
{
printf("this is child ppid:%d child:%d\n",getppid(),getpid());
sleep(1);
}
}else{
perror("fork");
}
return 0;
}
执行结果:
二、创建僵尸进程(Zombie process)
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源。
总代码:
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
int main(int argc, const char *argv[])
{
pid_t pid = fork();
if(pid > 0)
{
while(1)
{
printf("this is parent ppid:%d child:%d\n",getpid(),pid);
sleep(1);
}
}else if(pid == 0){
printf("this is child ppid:%d child:%d\n",getppid(),getpid());
sleep(1);
}else{
perror("fork");
}
return 0;
}
执行结果: