代码之家  ›  专栏  ›  技术社区  ›  Jan Deinhard

是否有充分的理由编写我自己的daemonize函数而不是使用daemon(3)?

  •  3
  • Jan Deinhard  · 技术社区  · 15 年前

    4 回复  |  直到 15 年前
        1
  •  3
  •   user175104    15 年前

    systemd手册页列出了正确编写的SysV后台程序在后台监控时应执行的操作:

    http://0pointer.de/public/systemd-man/daemon.html

        2
  •  5
  •   Kaelin Colclasure    15 年前

    daemon()函数在Unix的所有版本中都不可用,因此很多“可移植”代码都不使用它。只要您关心的所有目标平台都有daemon(),就没有理由推出自己的配方。

        3
  •  3
  •   R.. GitHub STOP HELPING ICE    15 年前

    根本没有 daemon POSIX中的函数。这是一个供应商扩展。因此,任何编写可移植代码的人都只需编写自己的代码。

        4
  •  2
  •   Jonathan Leffler    10 年前

    如果你不喜欢任何标准 daemon() 函数操作,你可以自己写。您可以控制它是否切换到根目录;您可以控制它是否将标准I/O通道重新连接到/dev/null。但是,如果您想让stderr对日志文件保持打开状态,同时将stdin和stdout重新连接到/dev/null,则必须决定是否使用 守护程序() 使用适当的选项,然后使用其他代码,比使用自己的代码要好。

    这方面的火箭科学并不多 ;它呼叫 fork() setsid() (根据Linux版本;MacOS版本提到 守护程序()