您的位置:首页 > 其它

守护进程 demo程序

2012-05-24 15:46 204 查看
/* daemon.c 创建守护进程实例 */
/* 守护进程,是Linux中的后台服务进程。生存期长,独立于控制台,周期性地执行任务或者等待处理某些事件。
* 守护进程常在系统引导载入时启动,在系统关闭时终止。Linux的系统服务大多是通过守护进程实现的
* 守护进程脱离了对控制终端的依赖,
* */
#include <stdlib.h>
#include <stdio.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); /* 改变文件权限掩码为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);
}
exit(0);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: