守护进程 demo程序

来源:互联网 发布:免费tk域名注册网站 编辑:程序博客网 时间:2024/05/29 13:32
/* 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);}


原创粉丝点击