daemon函数的原理及使用详解
在linux系统下创建守护进程的原理及步骤在文章(链接如下)中介绍过。http://blog168.chinaunix.net/space.php?uid=20196318&do=blog&id=28738
其实,linux提供了daemon函数用于创建守护进程,实现原理与上文中介绍的是一样的。
#include
int daemon(int nochdir, int noclose);
1. daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。
2. 当nochdir为0时,daemon将更改进城的根目录为root(“/”)。
3. 当noclose为0是,daemon将进城的STDIN, STDOUT, STDERR都重定向到/dev/null。
daemon的实现大致如下:
int daemon( int nochdir, int noclose )
{
pid_t pid;
if ( !nochdir && chdir("/") != 0 ) //如果nochdir=0,那么改变到"/"根目录
return -1;
if ( !noclose ) //如果没有noclose标志
{
int fd = open("/dev/null", O_RDWR);
if ( fd < 0 )
return -1;
/* 重定向标准输入、输出、错误 到/dev/null,
键盘的输入将对进程无任何影响,进程的输出也不会输出到终端
*/
dup(fd, 0);
dup(fd, 1);
dup(fd, 2);
close(fd);
}
pid = fork(); //创建子进程.
if (pid < 0) //失败
return -1;
if (pid > 0)
_exit(0); //返回执行的是父进程,那么父进程退出,让子进程变成真正的孤儿进程.
//创建的 daemon子进程执行到这里了
if ( setsid() < 0 ) //创建新的会话,并使得子进程成为新会话的领头进程
return -1;
return 0; //成功创建daemon子进程
}
使用实例:
int main()
{
daemon(1, 1); //参数根据需求确定
/* 在这里添加你需要在后台做的工作代码 */
}
如何杀死这样的进程:
通过ps+grep找到对应的后台进程,使用kill命令将进程杀死;也可创建shell脚本对进程的启动、关闭、重启进行自动管理
转载于:https://www.cnblogs.com/fnlingnzb-learner/p/6743336.html
daemon函数的原理及使用详解相关推荐
- python字符串strip的作用_Python字符串函数strip()原理及用法详解
Python字符串函数strip()原理及用法详解 strip:用于移除字符串头尾指定的字符(默认为空格)或字符序列.注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符. 语法:str.s ...
- python的编程模式-Python设计模式之状态模式原理与用法详解
本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...
- DeepLearning tutorial(1)Softmax回归原理简介+代码详解
FROM: http://blog.csdn.net/u012162613/article/details/43157801 DeepLearning tutorial(1)Softmax回归原理简介 ...
- DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
FROM:http://blog.csdn.net/u012162613/article/details/43221829 @author:wepon @blog:http://blog.csdn.n ...
- DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解
FROM: http://blog.csdn.net/u012162613/article/details/43225445 DeepLearning tutorial(4)CNN卷积神经网络原理简介 ...
- Pytorch|YOWO原理及代码详解(二)
Pytorch|YOWO原理及代码详解(二) 本博客上接,Pytorch|YOWO原理及代码详解(一),阅前可看. 1.正式训练 if opt.evaluate:logging('evaluating ...
- batchnorm原理及代码详解
转载自:http://www.ishenping.com/ArtInfo/156473.html batchnorm原理及代码详解 原博文 原微信推文 见到原作者的这篇微信小文整理得很详尽.故在csd ...
- Spark SQL原理及常用方法详解(二)
Spark SQL 一.Spark SQL基础知识 1.Spark SQL简介 (1)简单介绍 (2)Datasets & DataFrames (3)Spark SQL架构 (4)Spark ...
- 【胖虎的逆向之路】04——脱壳(一代壳)原理脱壳相关概念详解
[胖虎的逆向之路]04--脱壳(一代壳)原理&脱壳相关概念详解 [胖虎的逆向之路]01--动态加载和类加载机制详解 [胖虎的逆向之路]02--Android整体加壳原理详解&实现 [胖 ...
最新文章
- 科大星云诗社动态20201221
- 做时间序列预测有必要用深度学习吗?梯度提升回归树媲美甚至超越多个DNN模型...
- 进程调度实验_进程运行及其调度
- C51 printf修改如何能打印到不同的设备呢?
- 2018-2019 ACM-ICPC, Asia Shenyang Regional Contest E. The Kouga Ninja Scrolls 切比雪夫距离 +线段树
- 帝国cms 未审核 showinfo.php,帝国CMS批量修改文章未审核状态及批量修改上线时间...
- 如何设置mysql字符集支持utf-8 和gbk_如何设置Mysql数据库默认的字符集编码为GBK...
- MongoDB:有人敢像我一样说出开源的真实用意吗?
- “深度学习已死,可微编程万岁!”LeCun老师为何又语出惊人?
- 零基础跨行学习Java是否可行
- 用什么的SQL语句来查的一个表中有相同的记录条数
- 浏览器出现ERR_PROXY_CONNECTION_FAILED 错误代码
- 第27天 LDT与库
- mysql mtq_mysql高级复习 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区
- 一张图看懂阿里云网络产品[七]共享流量包
- Android分享文件到qq没反应,Android 微信,qq分享文件
- uni-app插入ucharts(echarts)图表,支持H5,APP,小程序
- 13.3断流_BUG全军覆没!苹果iOS13.3正式推送:4G断流、后台闪退统统解决
- 发展人脑连接组计划中(dHCP)婴儿扩散 MRI 的自动化处理流程
- adis16448与MPU6050 无人机飞行对比测试
热门文章
- TensorFlow Lite支持设备内置会话建模
- c++ split 方法(转)
- 【算法导论】学习笔记——第16章 贪心算法
- Adblock Plus cjxlist 规则说明与反馈贴
- 【知识小课堂】 mongodb 之字段中的【 数组】、【内嵌文档】
- Error:Execution failed for task ':dexDebug'
- 命令行command更新android sdk + gradle设置代理
- Service生命周期
- 接口继承中一个常见问题的思考
- Android Studio常用Plugin及 手动安装 Plugins