Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > Daemon2 -怎样使我的程序作为守护程序运行
【标  题】:Daemon2 -怎样使我的程序作为守护程序运行
【关键字】:Daemon2
【来  源】:http://www.cublog.cn/u/16141/showart.php?id=156187

Daemon2 -怎样使我的程序作为守护程序运行

Your Ad Here

一个“守护程序”进程通常被定义为一个后台进程,而且它不属于任何一个终端会话,(terminal session)。许多系统服务由守护程序实施;如网络服务,打印等。

简单地在后台启动一个程序并非足够是这些长时间运行的程序;那种方法没有正确地将进程从启动它的终端脱离(detach)。而且,启动守护程序的普遍接受的的方法是简单地手工执行或从rc脚本程序执行(译者注:rc:runcom);并希望这个守护程序将其*自身*安置到后台。

这里是成为守护程序的步骤:

  1. 调用‘fork()’以便父进程可以退出,这样就将控制权归还给运行你程序的 命令行或shell程序。需要这一步以便保证新进程不是一个进程组头领进程(process group leader)。下一步,‘setsid()’,会因为你是进程组头领进程而失败。

  2. 调用‘setsid()’ 以便成为一个进程组和会话组的头领进程。由于一个控制终端 与一个会话相关联,而且这个新会话还没有获得一个控制终端,我们的进程没 有控制终端,这对于守护程序来说是一件好事。

  3. 再次调用‘fork()’所以父进程(会话组头领进程)可以退出。这意味着我们,一 个非会话组头领进程永远不能重新获得控制终端。

  4. 调用‘chdir("/")’确认我们的进程不保持任何目录于使用状态。不做这个会导 致系统管理员不能卸装(umount)一个文件系统,因为它是我们的当前工作目录。 [类似的,我们可以改变当前目录至对于守护程序运行重要的文件所在目录]

  5. 调用‘umask(0)’以便我们拥有对于我们写的任何东西的完全控制。我们不知 道我们继承了什么样的umask。 [这一步是可选的](译者注:这里指步骤5,因为守护程序不一定需要写文件)

  6. 调用‘close()’关闭文件描述符0,1和2。这样我们释放了从父进程继承的标 准输入,标准输出,和标准错误输出。我们没办法知道这些文描述符符可能 已经被重定向去哪里。注意到许多守护程序使用‘sysconf()’来确认 ‘_SC_OPEN_MAX’的限制。‘_SC_OPEN_MAX’告诉你每个进程能够打 开的最多文件数。然后使用一个循环,守护程序可以关闭所有可能的文件描 述符。你必须决定你需要做这个或不做。如果你认为有可能有打开的文件描 述符,你需要关闭它们,因为系统有一个同时打开文件数的限制。

  7. 为标准输入,标准输出和标准错误输出建立新的文件描述符。即使你不打算 使用它们,打开着它们不失为一个好主意。准确操作这些描述符是基于各自 爱好;比如说,如果你有一个日志文件,你可能希望把它作为标准输出和标 准错误输出打开,而把‘/dev/null’作为标准输入打开;作为替代方法,你可 以将‘/dev/console’作为标准错误输出和/或标准输出打开,而‘/dev/null’作 为标准输入,或者任何其它对你的守护程序有意义的结合方法。(译者注:一 般使用dup2函数原子化关闭和复制文件描述符,参见《高级编程》3.12节)

如果你的守护程序是被‘inetd’启动的,几乎所有这些步骤都不需要(或不建议采用)。在那种情况下,标准输入,标准输出和标准错误输出都为你指定为网络连接,而且‘fork()’的调用和会话的操纵不应做(以免使‘inetd’造成混乱)。只有‘chdir()’和‘umask()’这两步保持有用。

Linux下的开发工具Emacs介绍(转):【上一篇】
Daemon:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • little endian和big endian的概念解释,判定与用途
  • 如何从企业战略的高度规划实施ERP系统工程?(三)
  • 刚跟组长坦白,要离开神州数码
  • 用DEBUG修复硬盘不启动故障 制特殊引导盘
  • XML主要具有以下几个特点
  • 微软下一代系统Longhorn取消关机概念
  • 操作系统常见问题:如何知道你的Windows版本是多少
  • 按键精灵雏形
  • Adobe Atmosphere 初级教程二
  • 基于SET协议的电子商务安全机制分析
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.