Linux 下创建守护进程
2007-11-14 21:45
591 查看
1,创建子进程,父进程退出
pid = fork();
if (pid >0)
...{
exit(0);
}
2. 在子进程中创建新会话
使用setsid
主要是使进程摆脱原会话的控制,摆脱原进程组的控制,摆脱原控制终端的控制。
3.改变当前目录为根目录
使用fork创建的子进程继承了父进程的当前工作目录,由于进程运行过程中,当前目录所在的文件系统(比如/mnt/usb等)是不能卸载的,这对以后使用会造成很多不便,比如系统由于某种原因需要进入单用户模式)因此,通常将“/”做为守护进程的当前工作目录 使用chdir
4.重新设置文件权限演码
umask(0)
5.关闭文件描述符
for (i=0; i<MAXFILE;i++){
close(i);
}
详细代码
/**//**
* @file: daemon.c
* @brief: daemon
* @author: wangbing
* @date: 2007-11-9
* @version: 1.0
*/
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <sys/param.h>
#include <errno.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/time.h>
int daemon_start(void)
...{
int i;
pid_t pid;
if( (pid = fork()) < 0)
...{
return(-1);
}
else if (pid!=0)
...{
exit(0);
}
setsid();
chdir("/");
umask(0):
for (i=0; i<MAXFILE; i++)
...{
close(i);
}
return 0;
}
pid = fork();
if (pid >0)
...{
exit(0);
}
2. 在子进程中创建新会话
使用setsid
主要是使进程摆脱原会话的控制,摆脱原进程组的控制,摆脱原控制终端的控制。
3.改变当前目录为根目录
使用fork创建的子进程继承了父进程的当前工作目录,由于进程运行过程中,当前目录所在的文件系统(比如/mnt/usb等)是不能卸载的,这对以后使用会造成很多不便,比如系统由于某种原因需要进入单用户模式)因此,通常将“/”做为守护进程的当前工作目录 使用chdir
4.重新设置文件权限演码
umask(0)
5.关闭文件描述符
for (i=0; i<MAXFILE;i++){
close(i);
}
详细代码
/**//**
* @file: daemon.c
* @brief: daemon
* @author: wangbing
* @date: 2007-11-9
* @version: 1.0
*/
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <sys/param.h>
#include <errno.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/time.h>
int daemon_start(void)
...{
int i;
pid_t pid;
if( (pid = fork()) < 0)
...{
return(-1);
}
else if (pid!=0)
...{
exit(0);
}
setsid();
chdir("/");
umask(0):
for (i=0; i<MAXFILE; i++)
...{
close(i);
}
return 0;
}
相关文章推荐
- linux创建守护进程
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
- linux下创建守护进程(daemon process)
- Linux 创建伪守护进程
- linux下创建后台守护进程实例
- linux 如何创建守护进程
- 创建守护进程步骤与setsid() -- linux
- Linux环境下,使用PHP创建一个守护进程
- 《王保明老师----Linux开发学习笔记》------讲12:守护进程 -----如何分析和理解下面这个创建守护进程的实例
- linux自己创建守护进程
- Linux 简单shell创建自己的守护进程,自动重启,纪录进程运行状态,日志切割压缩
- linux守护进程原理及创建详解
- 【Linux编程】守护进程(daemon)详解与创建
- 用C语言在Linux系统下创建守护进程(Daemon)
- 创建守护进程步骤与setsid() -- linux
- linux守护进程原理及创建详解
- Linux 下,如何创建守护进程
- linux 守护进程创建流程
- linux创建守护进程--Daemon函数