您的位置:首页 > 其它

进程的守护进程的用法

2016-06-19 08:46 323 查看
编写守护进程的步骤:

1、创建子进程,父进程退出。



2、在子进程中创建新会话。

setsid();



3、改变当前目录为根目录。

chdir("/");

4、重设文件权限掩码。

umask(0);

5、关闭文件描述符。

for(i = 0; i < getdtablesize(); i++) /* 第五步 */
{
close(i);
}

代码分析;

/* daemon.c创建守护进程实例 */
#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 i, fd;
char* buf = "This is a Daemon\n";

pid = fork();    /* 第一步 */
if(pid < 0)
{
printf("Error fork\n");
exit(1);
}
else
if(pid > 0)
{
exit(0);    /* 父进程退出 */
}

setsid();    /* 第二步 */
chdir("/");    /* 第三步 */
umask(0);    /* 第四步 */
for(i = 0; i < getdtablesize(); i++)    /* 第五步 */
{
close(i);
}

/* 这时创建完守护进程,以下开始正式进入守护进程工作 */
while(1)
{
if((fd = open("/tmp/daemon.log", O_CREAT | O_WRONLY | O_APPEND, 0600)) < 0)
{
printf("Open file error\n");
exit(1);
}
write(fd, buf, strlen(buf) + 1);
close(fd);
sleep(10);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: