1.僵尸进程
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/wait.h>
int main(int argc,const char * argv[])
{
pid_t chid = fork();
printf("%d\n",chid);
if(chid > 0){
while(1){
printf("this is zom%d\n",chid);
sleep(1);
}
}
wait;
return 0;
}
2.孤儿进程
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc,const char * argv[])
{ //孤儿进程
//先创建子进程
pid_t chid = fork();
printf("%d\n",chid);
//再让子进程死循环,父进程直接退出循环
if(0 == chid){
while(1){
printf("this is orp %d\n",chid);
sleep(1);
}
}
return 0;
}
3.守护进程(幽灵进程)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/wait.h>
int main(int argc,const char * argv[])
{
//变孤儿
pid_t chid = fork();
if(0 == chid){
//创建新绘画组
pid_t sid = setsid();
//修改目录
chdir("/");
//
umask(0);
//删除表
for(int i = 0; i <getdtablesize(); i++){
close(i);
}
while(1){
//功能位置
sleep(1);
}
}
return 0;
}