创建一个守护进程
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
#include<sys/stat.h>
int main(int argc, const char *argv[])
{
inti=0;
//1.创建孤儿进程
if(fork()==0){
//2.创建新的会话组
pid_tsid=setsid();
//3.修改目录为根目录
chdir("/");
//4.重设文件权限掩码
umask(0);
//5.关闭所有文件描述符
for(i=0;i<1024;i++){
close(i);
}
while(1){
//守护进程的任务代码
sleep(1);
}
}
return0;
}
创建一个孤儿进程
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
int main(int argc, const char *argv[])
{
if(fork()==0){
while(1){
printf("child=%d,%d\n",getpid(),getppid());
sleep(1);
}
}
return0;
}
创建一个僵尸进程
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
int main(int argc, const char *argv[])
{
If(fork()>0){
while(1){
printf(“parent”);
sleep(1);
}
}
return 0;
}