Linux 的信号
SIGPIPE 管道终止 ,客户端向服务端发送数据,如果客户端突然终止,服务端并没有及时断开连接,仍向客户端 socket 发送数据,就成为写入无人读取的管道,产生 SIGPIPE 信号。如果不对该信号处理,引起 Crash,默认终止进程,将进程杀死。要对这信号接管。
SIGCHLD 子进程结束或者停止时发送;一般来说就是对进程接管或者用 wait 等待;如果不做处理会产生僵尸进程。一个早已死亡的进程,但在进程表中仍有位置。
SIGALRM 定时器信号,默认终止进程
SIGUSR1/SIGUSR2 自定义,默认终止进程
handler 是一个处理信号的函数
以 fork 的方式创建后台服务
用 fork 创建一个子进程,创建完,父进程退出,子进程变成一个孤儿进程被 init 进程进程接管
调用 setsid 建立新的进程会话
将当前工作目录切换到根目录中
将标准输入、输出,出错重定向到/dev/null
复制代码
实现 daemon_app 编程
复制代码
daemon(int nochdir,int noclose)
nochdir 设置为 0 改变目录,设置非零就不改变目录
noclose 一样也是(关闭标准文件描述)
如果成功就返回 0,不成功就返回 1。
版权声明: 本文为 InfoQ 作者【菜鸟小sailor 🐕】的原创文章。
原文链接:【http://xie.infoq.cn/article/072bc715769ea77d798927ca1】。未经作者许可,禁止转载。
评论