守护进程
发布日期:2021-07-01 04:29:07 浏览次数:2 分类:技术文章

本文共 893 字,大约阅读时间需要 2 分钟。

文章目录

1 守护进程

我们知道会话用来管理前后台进程,会话一般关联着一个终端。当终端被关闭了之后,会话中的所有进程都会被关掉。而守护进程不受终端影响,就终端退出,也可以继续在后台运行。

下面看一下如何来写一个守护进程?

  1. 创建一个子进程,父进程直接退出。方法:通过 fork()函数。
  2. 创建一个新的刽舌,摆脱终端的影响。方法:通过setsid()函数。
  3. 改变守护进程的当前工作目录,改为根目录,方法:通过chdir() 函数。
  4. 重设文件权限掩码。新建文件的权限受文件权限掩码影响,比如: umask : 022 , 00001 0010 ,只写。新建文件默认权限: 666 , 110110110。 真正的文件权限: 666 &~umask。方法通过umask()函数。
  5. 关闭不需要的文件述符 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ps命令
下一篇:进程的退出

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月12日 01时39分24秒