守护进程(daemon)又称精灵进程,系统启动运行一直到系统结束,终端 ps -e 命令后,看到的以d字母结尾的进程一般为守护进程,如(xinted等)。守护进程以超级用户权限运行。
其创建过程步骤及实例如下:
-
#include<stdio.h>
-
#include<stdlib.h>
-
#include<string.h>
-
#include<fcntl.h>
-
#include<sys/types.h>
-
#include<unistd.h>
-
#include<sys/wait.h>
-
-
int main()
-
{
-
pid_t pid;
-
int sid;
-
int fd;
-
char *buf="This is a daemon process\n";
-
-
pid=fork(); //第一步 创建父子进程
-
-
if(pid<0)
-
{
-
printf("fork failed");
-
}
-
if(pid>0) //父进程退出,由init 进程领养子进程
-
{
-
exit(0);
-
}
-
-
if(pid==0)
-
{
-
setsid(); //第二步 脱离原来进程组和会话组
-
-
chdir("/"); // 第三部切换到根目录,避免文件系统变动影响守护进程
-
umask(0); // 第四步 重设文件权限
-
//第五步 关闭文件描述符
-
//守护进程创建结束,下面即可开始守护进程的工作
-
fd=open("/tmp/daemon.log",
-
O_CREAT|O_WRONLY|O_APPEND,0600);
-
if(fd<0)
-
{
-
perror("open file error:");
-
}
-
while(1)
-
{
-
-
write(fd,buf,strlen(buf)+1);
-
sleep(10);
-
}
-
close(fd);
-
}
-
exit(0);
-
}
阅读(991) | 评论(0) | 转发(0) |