守护进程
发布日期:2021-07-01 04:29:07
浏览次数:2
分类:技术文章
本文共 893 字,大约阅读时间需要 2 分钟。
文章目录
1 守护进程
我们知道会话用来管理前后台进程,会话一般关联着一个终端。当终端被关闭了之后,会话中的所有进程都会被关掉。而守护进程不受终端影响,就终端退出,也可以继续在后台运行。
下面看一下如何来写一个守护进程?
- 创建一个子进程,父进程直接退出。方法:通过 fork()函数。
- 创建一个新的刽舌,摆脱终端的影响。方法:通过setsid()函数。
- 改变守护进程的当前工作目录,改为根目录,方法:通过chdir() 函数。
- 重设文件权限掩码。新建文件的权限受文件权限掩码影响,比如: umask : 022 , 00001 0010 ,只写。新建文件默认权限: 666 , 110110110。 真正的文件权限: 666 &~umask。方法通过umask()函数。
- 关闭不需要的文件述符 0 , 1 , 2 :标准输入、输出、出错。方法:通过close()函数。
守护进程示例代码:
/*守护进程实例子*/#include#include #include #include #include #include #include #define MAXFILE 3int main(){ pid_t pc; int i,fd,len; char *buf="this is a dameon \n"; len = strlen(buf); pc =fork(); //创建一个进程用来做守护进程 if(pc<0) { printf("error fork \n"); exit(1); } else if(pc>0) exit(0); //结束父进程 setsid(); //使子进程独立1.摆脱原会话控制 2.摆脱原进程组的控制 3.摆脱控制中端的控制 chdir("/"); //改变当前工作目录,这也是为了摆脱父进程的影响 umask(0); //重设文件权限掩码 for(i=0;i
参考资料:
转载地址:https://muzimin.blog.csdn.net/article/details/107782030 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月12日 01时39分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
剑指offer:往上到下打印二叉树(java)
2019-05-03
剑指offer:二叉搜索树的后序遍历序列(java)
2019-05-03
剑指offer:二叉树中和为某一值的所有路径(java)
2019-05-03
剑指offer:复杂链表的复制(java)
2019-05-03
剑指offer:二叉搜索树与双向链表(java)
2019-05-03
剑指offer:字符串的排列(java)
2019-05-03
剑指offer:字符串的组合(java)
2019-05-03
剑指offer:数组中出现次数超过一半的数字(java)
2019-05-03
剑指offer:最小的k个数(java)
2019-05-03
剑指offer:连续子数组的最大和(java)
2019-05-03
剑指offer:从1到n整数中1出现的次数(java)
2019-05-03
剑指offer:把数组排成最小的数(java)
2019-05-03
剑指offer:丑数(java)
2019-05-03
剑指offer:第一个只出现一次的字
2019-05-03
剑指offer:数组中的逆序对(java)
2019-05-03
剑指offer:两个链表的第一个公共结点(java)
2019-05-03
剑指offer:数字在排序数组中出现的次数(java)
2019-05-03
实时开发框架Meteor API解读系列<二>Core
2019-05-03