嵌入式Linux应用程序开发详解
华清远见
本文只是阅读文摘。
创建一个守护进程的步骤:
1、创建一个子进程,然后退出父进程;
2、在子进程中使用创建新会话---setsid();
3、改变当前工作目录---chdir();
4、重新设置文件权限掩码---umask();
5、关闭所有的文件描述符---close(fdx);
6、设置daemon程序的任务---此例主要在while循环中体现。
下面是一个例子程序:
/* daemon* how to create a daemon process?* --Just follow these steps.* 2014-09-28* zsl*/#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <fcntl.h>#define MAXFILE 65536int main(){pid_t child_pid, new_pid;int fd;int i;child_pid = fork();if ( child_pid < 0 ) // fork failed{perror("fork");exit(1);}else if (child_pid > 0 ) // parent{fprintf(stderr, "Parent exit...\n");exit(0);}else // child{/* Create a new session */new_pid = setsid();if ( new_pid < 0){perror("setsid");exit(1);}/* Change dir */if ( chdir("/") != 0 ){perror("chdir");exit(2);}/* Set umask */umask(0000);/* Close all file descriptor */for (i = 0; i < MAXFILE; i ++){close(i);}/* The daemon job */while(1){if ((fd = open("/tmp/daemon_log.txt", O_CREAT | O_APPEND | O_WRONLY, 0600)) == -1){perror("open");exit(3);}write(fd, "daemon is working...\n", 21);close (fd);sleep(10);}} // end of childe processreturn 0;}
浙公网安备 33010602011771号