LINUX系统中的进程类型:
1.交互进程,该类进程是由Shell控制和运行的,交互进程既可以在前台运行,也可以在后台运行。
2.批处理进程:该类进程不属于某个终端,它被提交到一个队列中以便顺序执行。
3.守护进程:该类进程在后台运行,它一般在Linux启动时开始执行,系统关闭时结束。
进程结构体为task_struct
创建守护进程步骤:
1.创建子进程,父进程退出。
2.在子进程中创建新会话。
3.改变当前目录为根目录。
4.重设文件权限掩码。
5.关闭文件描述符。
#include <unistd.h>
#include <stdlib.h>
int main(){
//1.创建子进程,父进程退出。
pid_t pid=fork();
if(pid<0){
perror("fork()");
}
if(pid>0){
exit(-1);
}
//2.在子进程中创建新会话。
pid_t sid=setsid();
if(sid<1){
perror("setsid()");
}
//3.改变当前目录为根目录。
if(chdir("/")<0){
perror("chdir()");
}
//4.重设文件权限掩码。
umask(0);
//5.关闭文件描述符。
int i=0;
for(i=0;i<getdtablesize();i++){
close(i);
}
while(1)
/* do nothing */;
return 0;
}