標籤:des style http io os 使用 ar for 檔案
嵌入式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 65536
int 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 process
return 0;
}
來自為知筆記(Wiz)
嵌入式Linux應用程式開發詳解------(建立守護進程)