僵尸进程
简易代码
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
pid_t pid=fork();
if(pid>0)
{
sleep(1);
printf("this is parent:%d child:%d\n",getpid(),pid);
}
else if(pid==0)
{
printf("this is child ppid:%d child:%d\n",getppid(),getpid());
_exit(0);
}
else
{
perror("fork");
}
while(1)
sleep(1);
}
结果图:
僵尸进程:即为子进程已经结束,父进程并未调用wait函数获取子进程的状态,则此子进程被称为僵尸进程。
孤儿进程
简易代码
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main(int argc,const char* argv[])
{
pid_t pid=fork();
if(pid>0)
{
sleep(1);
printf("this is parent:%d child:%d\n",getpid(),pid);
}
else if(pid==0)
{
printf("this is child ppid:%d child:%d\n",getppid(),getpid());
sleep(2);
while(1)
{
printf("this is child ppid:%d child:%d\n",getppid(),getpid());
sleep(10);
}
}
else
{
perror("fork");
}
return 0;
}
~
结果图:
孤儿进程:父进程已经结束,但是子进程还没有结束,则改子进程为孤儿进程, ppid为1即表示子进程已被init进程收养。
切换图形化界面和字符界面方法:
1.ctrl+alt+f5进入字符界面
2.输入当前用户名
3.输入密码
4.在字符界面找到相应程序执行