deamon守护进程
来源:互联网 发布:vb.net winhttp 编辑:程序博客网 时间:2024/06/05 12:42
在linux下的一种特殊进程称为守护进程,其作用是在后台默默提供服务的,随系统结束而结束,或者是kill -9 的信号结束
daemon,表示守护进程,简称为d(进程名后面带d的基本就是守护进程)
ps -aux
命令得到的程序中在tty 一栏中为?的皆为守护进程,说明不隶属于任何的控制台的程序。
一般我们在终端中执行的程序其父进程都是bash ,子进程在bash结束后,会被回收
实现守护进程有以下的几个步
- 子进程等待父进程退出
- 子进程使用setsid创建新的会话期,脱离控制台
- 调用chdir将当前工作目录设置为/
- umask设置为0以取消任何文件权限屏蔽
- 关闭所有文件描述符
- 将0、1、2定位到/dev/null
- 通过在父进程中执行 exit() 先于子进程退出
这样子进程的父进程就自动的切换为了init - chdir(“/”); 切换工作目录为根目录
- umask();
- close();所有的打开的文件描述符
- open(/dev/null)连续三次,使得STDIN,STDOUT,STDERR,都对应的是/dev/null也算是系统的垃圾桶
- 这样就可以实现一个守护进程
下面是实现的代码demo:
void deamon_creator(char *cmd) { pid_t pid; int i; int fd0, fd1, fd2; if ( (pid = fork()) < 0){ printf("fork failed\n"); return; } else if (pid > 0){ //the parent process terminate! exit(0); } if (setsid() < 0){ //set the sid printf("setsid failed\n"); return; } for (i = 0; i < sysconf(OPEN_MAX); i++){ //get the num of max_opened close(i); } if (chdir("/") < 0){ printf("chdir failed\n"); return; } umask(0); //set the mask fd0 = open("dev/null", O_RDWR); fd1 = dup(0); fd2 = dup(0); //copy the fd one by one for(;;);}
0 0
- 关于守护进程deamon
- python 守护进程deamon
- deamon守护进程
- Linux Deamon(守护进程)实现方法
- deamon(守护进程)的实现
- 守护线程(Deamon)
- 多线程----守护线程---Deamon
- Linux进程间的通信——有名管道fifo与守护进程deamon
- java守护线程(deamon)学习
- 守护进程学习————两次fork细节、deamon()函数
- 03.deamon进程
- Windows下实现Deamon守护脚本
- linux下的deamon进程
- linux下的deamon进程
- linux下的deamon进程
- linux下的deamon进程
- deamon
- 守护进程守护自身
- 给定输入的字符串,将字符串中的单词顺序颠倒,但要保持单词的字符顺序。
- MySQL的初步使用(2)———SQL语句DRL详解
- Building a Space Station
- CSS盒子模型各属性层级及基础知识
- 浅析java中 == 和equals的区别
- deamon守护进程
- MPI Maelstrom POJ 1502
- python Bug | ImportError: No module named _curses
- 38、批量改变对象的属性
- BZOJ 1087: [SCOI2005]互不侵犯King 预处理,状压DP
- 1048. Find Coins
- vue 第五节
- Android编程权威指南(第二版)学习笔记(二十)—— 第20章 样式与主题
- Intel 处理器-保护模式