免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 920 | 回复: 0
打印 上一主题 下一主题

守护进程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-07 22:24 |只看该作者 |倒序浏览

                所谓守护进程即为(这是个人理解哈)脱离父进程,脱离shell控制的,寄存于系统进程(init进程)的一种进程(从专业的文档上摘录下来的为这个说的:守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引
导装入时启动,在系统关闭时终止。unix系统有很多守护进程,大多数服务器都是用守护进程实现的。比如,网络服务inetd、Web服务http等。同
时,守护进程完成许多系统任务。比如,作业规划进程crond、打印进程lqd等)
大致步骤为:
1.fork()一个子进程,并关闭父进程,摆脱shell控制
2.setsid()将当前子进程设置为会话组长
3.chdir()改变当前工作目录,一般是建议将其设置为根目录chdir("/");
4.close()关闭打开的文件描述符(这点是因为子进程从父进程那边继承了很多代码段,当然包括一些打开的文件描述符,如果不关闭的话就会导致很多资源的浪费,而且也不希望守护进程将一些信息打印到终端上
5.umask(0)重设掩码
一个简单的守护进程程序(不写头文件了哈)
               
               
                int main(int args,char **argv)
{
  int pid,i;
  pid=fork();
if(pid0)
{
   printf("fork error!");
   exit(1);
}else if(pid>0)
{
   exit(0);//退出父进程
}
  setsid();
  chdir("/");
  umask(0);
  for(i=0;iNOFILE;i++)
   {
    close(i);
   }

return 0;
}
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/103340/showart_2047597.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP