Linux守护进程的创建(结合nginx框架)

先介绍几个相关函数:

int dup2(arg1,arg2):参数一指向的内容赋给参数二,shi的参数二也能访问参数一所指向的内容,并返回新的描述符

int fork()创建子进程,返回值-1:创建失败 返回值0:子进程 返回其他:父进程

setsid()调用成功后,返回新的会话的ID,调用setsid函数的进程成为新的会话的领头进程,并与其父进程的会话组和进程组脱离

unmask():umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限,咱们现在不用管,设置成0就可以了

代码:

#include <fcntl.h>
#include <iostream>
#include <signal.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
using std::cout;
using std::endl;
int ngx_doemon
{int fd;switch (fork()){case -1:return -1;case 0:break;default:exit(0);}if (setsid() == -1){return -1;}umask(0);fd = open("dev/null", O_RDWR);if (fd == -1){return -1;}if (dup2(fd, STDIN_FILENO) == -1){return -1;}if (dup2(df, STDOUT_FILENO)){return -1;}if (fd > STDERR_FILENO){if (close(fd) == -1)return -1;}return 1;
}
int main(int argc, char const *argv[])
{if (ngx_doemon != 1){//创建守护进程失败,可以做失败后的处理return -1;}else{//创建守护进程成功,执行守护进程中要做的工作for (;;){sleep(1);}}return 0;
}

Linux守护进程的创建(结合nginx框架)相关推荐

  1. linux守护进程的创建

    下面的完成了这样一个功能,创建一个守护进程,每个一秒在/tmp目录下的文件peng.txt中记录当前系统时间. 一.守护进程 守护进程是linux中的后台服务进程,在系统启动时开始运行,在系统关闭时终 ...

  2. linux下daemon守护进程的实现(以nginx代码为例)

    ngx_int_t ngx_daemon(ngx_log_t *log) {int fd;// 让init进程成为新产生进程的父进程:// 调用fork函数创建子进程后,使父进程立即退出.这样,产生的 ...

  3. Linux系统编程之--守护进程的创建和详解【转】

    本文转载自:http://www.cnblogs.com/mickole/p/3188321.html 一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终 ...

  4. Linux 守护进程创建原理及简易方法

    1:什么是Linux下的守护进程 Linux daemon是运行于后台常驻内存的一种特殊进程,周期性的执行或者等待trigger执行某个任务,与用户交互断开,独立于控制终端.一个守护进程的父进程是in ...

  5. 浅析Linux守护进程、守护进程的创建步骤

    文章目录 何为守护进程 进程组 / 组长进程 / 会话 / 会话首进程 进程组 会话 程序示例 守护进程的创建步骤 创建守护进程程序示例 何为守护进程 守护进程(daemon)是一类在后台运行的特殊进 ...

  6. linux下守护进程的创建和sighup信号

    先来说下我理解的守护进程:守护进程没有控制终端,我觉得可以把它理解为一个后台进程. 本篇文章假设读者知道什么是进程组与会话. 下面看一下unix环境高级编程中守护进程的创建流程: 1.首先在进程中调用 ...

  7. .NET跨平台实践:用C#开发Linux守护进程

    Linux守护进程(Daemon)是Linux的后台服务进程,它脱离了与控制终端的关联,直接由Linux init进程管理其生命周期,即使你关闭了控制台,daemon也能在后台正常工作. 一句话,为L ...

  8. Linux守护进程实现

    Linux守护进程 redis版: void daemonize(void) {int fd;if (fork() != 0) exit(0); /* parent exits */setsid(); ...

  9. Linux 守护进程,编写(转载)

    设置守护进程过程: 1.创建子进程,父进程退出 2.在子进程中创建新会话 3.改变当前目录为根目录 4.重设文件权限掩码 5.关闭文件描述符 *6.守护进程里,忽略SIGCHLD信号 (即使fork两 ...

最新文章

  1. leetcode-125-验证回文串
  2. python僵尸进程和孤儿进程_python学习笔记——孤儿进程和僵尸进程
  3. 报错:不是可以识别的内置函数名称
  4. MySQL 基础———— UNION 联合查询
  5. CSS入门学习(转)
  6. 15个最受欢迎的Python开源框架
  7. Uim的情人节礼物·其之弐(洛谷-P2524)
  8. 电机的入门之路系列5--二相四线,四相五线,四相六线电机的区分方法
  9. 高德地图时间和实际差多少_带着“高德地图”去工作
  10. python cookbook 学习笔记 -- 1.5 去除字符串两端空格
  11. Jenkins发布PHP项目之一自动化部署
  12. windows 10
  13. {基于Applet的J2ME模拟器}和{microemulator}[J2ME推荐]
  14. android 内存清理命令,安卓手机内存怎么清理 安卓手机内存清理方法【图文】
  15. 日本作家将编程语言变成了动漫人物,你猜C语言是萝莉还是御姐?不得不说脑洞实在太大了!
  16. 在 LaTeX 中插入图片
  17. 【CSDN编程竞赛第六期】python详解
  18. 软件测试之第一章 软件测试和测试环境
  19. 邮箱密码忘记了怎么办?邮箱密码找回技巧
  20. 用python写注册登录界面web_用Python实现web端用户登录和注册功能

热门文章

  1. linux python源码目录结构,TensorFlow0.8源码阅读 -- 代码目录结构讲解
  2. sqoop动态分区导入mysql,使用sqoop import从mysql往hive含分区表中导入数据的一些注意事项...
  3. 服务器自动运行python_在虚拟主机中安装了python程序,如何使它在服务器上自动运行?...
  4. c语言程序设计学生程序查询,《c语言程序设计报告-学生信息管理系统》.doc
  5. c实现三角形角度大于一个值_初中数学三角形知识点小结
  6. 【机器视觉学习笔记】OpenCV C++ 与 HSV颜色模型
  7. MAC OS X 10.9.X下用命令行开启SSD trim的方法汇总
  8. 【Linux】FTP文件下载
  9. Fedora 15 快捷操作之新体验
  10. React开发(177):opentab没有menu会报错