是否有充分的理由编写我自己的守护功能而不是使用守护程序(3)?

StackOverflow https://stackoverflow.com/questions/3720439

  •  03-10-2019
  •  | 
  •  

网上有很多示例实现。我看到的大多数人都不使用守护程序(3)功能在后台运行程序。这只是一个品味,无知,还是有充分的理由写我自己的功能?使用守护程序(3)是否有特定的缺点?是不安全的吗?

有帮助吗?

解决方案

BSD守护程序()功能非常有限,并引起了滥用。只有很少的守护程序可以正确使用此功能。

Systemd Man页面有一个列表,列出了守护程序时正确编写的SYSV守护程序应该做什么:

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

其他提示

守护程序()函数在历史上并非在UNIX的所有口味中都可用,因此许多“便携式”代码不使用它。只要您关心的是守护程序(),只要您关心的所有目标平台,就没有理由滚动自己的食谱。

没有 daemon POSIX中的功能。这是供应商扩展。因此,任何编写便携式代码的人都可以写自己的书。

如果您不喜欢任何标准 daemon() 功能动作,您可能会写自己的作用。您可以控制它是否切换到根目录;您可以控制它是否将标准I/O通道重新连接到/DEV/NULL。但是,如果您想在将stdin和stdout重新连接到 /dev /null时,请将stderr打开到日志文件中,则必须决定是否使用 daemon() 有了适当的选项,其他代码的选择要比滚动自己更好。

没有太多的火箭科学 daemon();它打电话 fork()setsid() (根据Linux版本; MacOS版本提到暂停叹息 daemon() 正在运行)。查看标准资源以获取有关守护程序的更多信息,例如:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top