关于Unix网络编程卷一创建守护进程
2017-04-23 20:05
246 查看
Unix网络编程卷一13.4,创建守护进程代码如下:
#include <syslog.h>
#define MAXFD 64
extern int daemon_proc;//定义在其他文件
/*********************************************
* 1.fork()
* 2.setsid()
* 3.signal(SIGHUP,SIG_IGN)
* 4.fork()
* 5.chdir("/")
* 6.close(所有文件描述符)
* 7.dup2()
*
**********************************************/
int daemon_init(const char *pname,int facility)
{
int i;
pid_t pid;
if((pid=fock())<0)
return -1;
else if(pid)
_exit(0);
if(setsid()<0)
return -1;
signal(SIGHUP,SIG_IGN);
if((pid=fork())<0)
return -1;
else if(pid)
_exit(0);
daemon_proc=1;
chdir("/");
for(i=0;i<MAXFD;++i)
close(i);
open("/dev/null",O_RDONLY);
open("/dev/null",O_RDWR);
open("/dev/null",O_RDWR);
openlog(pname,LOG_PID,facility);
return 0;
}主要解释三个open函数是怎么把stdin、stdout、stderr(描述符分别为0、1、2)重定向到/dev/null 的:
首先,通过循环,将所有文件描述符关闭,然后第一个open调用,那么返回的文件描述符肯定是0,
同理,第二个open返回1,第三个open返回2。这样,就相当于描述符0,1,2都指向/dev/null了。
另外,还有一种方法:
int fd=open("/dev/null",O_RDWR);
dup2(fd,0);
dup2(fd,1);
dup2(fd,2);
if(fd>2)
close(fd);
#include <syslog.h>
#define MAXFD 64
extern int daemon_proc;//定义在其他文件
/*********************************************
* 1.fork()
* 2.setsid()
* 3.signal(SIGHUP,SIG_IGN)
* 4.fork()
* 5.chdir("/")
* 6.close(所有文件描述符)
* 7.dup2()
*
**********************************************/
int daemon_init(const char *pname,int facility)
{
int i;
pid_t pid;
if((pid=fock())<0)
return -1;
else if(pid)
_exit(0);
if(setsid()<0)
return -1;
signal(SIGHUP,SIG_IGN);
if((pid=fork())<0)
return -1;
else if(pid)
_exit(0);
daemon_proc=1;
chdir("/");
for(i=0;i<MAXFD;++i)
close(i);
open("/dev/null",O_RDONLY);
open("/dev/null",O_RDWR);
open("/dev/null",O_RDWR);
openlog(pname,LOG_PID,facility);
return 0;
}主要解释三个open函数是怎么把stdin、stdout、stderr(描述符分别为0、1、2)重定向到/dev/null 的:
首先,通过循环,将所有文件描述符关闭,然后第一个open调用,那么返回的文件描述符肯定是0,
同理,第二个open返回1,第三个open返回2。这样,就相当于描述符0,1,2都指向/dev/null了。
另外,还有一种方法:
int fd=open("/dev/null",O_RDWR);
dup2(fd,0);
dup2(fd,1);
dup2(fd,2);
if(fd>2)
close(fd);
相关文章推荐
- 在unix系统中创建守护进程
- 关于守护进程deamon
- 创建简单的守护进程的编写规则
- python 创建守护进程
- 关于linux端php实现守护进程
- Linux下守护进程的创建
- linux下创建守护进程(daemon process)代码-详细注释
- linux进程创建与守护;exec 进程内核页表建立
- Linux下C语言编程入门-3关于进程的创建和执行
- 转载:关于fork创建子进程的疑问
- linux 守护进程(daemon)的创建方法
- 如何创建守护进程(转)
- 关于进程创建,CreateProcess
- linux进程创建与守护;exec 进程内核页表建立
- linux下守护进程创建步骤解剖
- Linux 下创建守护进程
- Linux下守护进程的创建例子
- 守护进程 创建 详解
- 关于R3下的自身进程守护
- linux c 创建守护进程