关于Unix网络编程卷一创建守护进程
来源:互联网 发布:获取所有股票信息 js 编辑:程序博客网 时间:2024/04/30 00:19
Unix网络编程卷一13.4,创建守护进程代码如下:
#include <syslog.h>#define MAXFD 64extern 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);
0 0
- 关于Unix网络编程卷一创建守护进程
- UNIX网络编程卷一:第十三章 守护进程和inetd超级服务器
- unix网络编程学习--守护进程
- Unix/Linux编程-创建守护进程
- Unix 网络编程卷一- 学习笔记
- unix网络编程(卷一)--安装源码
- 【计算机网络】《unix网络编程卷一》读书笔记
- unix 网络编程 卷一(unp.h)
- Unix网络编程卷一笔记
- UNIX网络编程卷一 第一章 简介
- 学习《UNIX网络编程卷一》笔记
- 关于编译unix网络编程第二卷--进程间通信源代码的问题及解决
- UNIX网络编程卷2进程间通信读书笔记(一)—概述
- 《Unix网络编程》卷1:套接字联网API(第3版):守护进程和inetd超级服务器、高级I/O、Unix域协议
- UNIX网络编程卷2进程间通信读书笔记汇总
- UNIX网络编程卷2进程间通信读书笔记汇总
- UNIX网络编程卷2进程间通信读书笔记-管道
- UNIX网络编程 卷2:进程间通信
- 1.SpringMVC入门
- C/C++常用标准库函数
- POJ 2376 Cleaning Shifts(贪心)
- HZAU 1202 GCD (矩阵快速幂 + GCD)
- ArrayList自动扩容解析
- 关于Unix网络编程卷一创建守护进程
- 关于Hybrid App 配置
- 445. Add Two Numbers II
- 扩展kmp(HDU4333)
- nat123+OpenVPN连接校园网
- 4.23
- 1001. A+B Format (20)
- 解决Failed to execute goal org.apache.maven.plugins
- HDU 4414 Finding crosses(爆搜)