我如何开始在类似Unix的操作系统(如Linux)中编写守护程序进程?

NeD*_*ark 1 c++ unix linux daemon ipc

我正在用PHP做一个工具供我个人使用.但PHP非常慢,我需要做的任务需要花费很多时间,因此我将在c ++中创建一个守护进程并将其保留在后台(它将在VPS中运行).

PHP将通过简单的tcp套接字连接到守护进程(我将尝试设计/使用简单的IPC协议)以提交任务.守护程序将使用简单的FIFO队列管理任务.PHP只会启动任务,但它不会等到它结束,因为它可能需要几分钟(PHP也会监视任务 - 但这是另一个主题).

Web/PHP界面根本不是问题.但我没有unix守护程序编程的经验.我在Linux上用c ++制作了简单的控制台程序,所以我只需要一本手册/书籍/指南和建议来开始使用unix守护进程.

谢谢.

小智 5

http://www.enderunix.org/docs/eng/daemon.php提供了一个相当全面但简短的介绍,其示例代码似乎涵盖了所有重要的内容.如果您愿意花一些钱在纸上(值得,恕我直言),那么在"UNIX环境中的高级编程(第2版)"中有更深入的描述.

上面的链接不处理init脚本,但是你可以通过一些搜索来解决这个问题 - 你需要的是启动守护进程代码的一些方法以及稍后发送信号的某种方式 - 通常,你编写的PID守护进程到/ var/run/XXX文件.

  • 上面的链接只有一个fork.规范方法,以及我认为"UNIX环境中的高级编程"建议的方法是,你应该分叉两次.http://stackoverflow.com/questions/881388/what-is-the-reason-for-performing-a-double-fork-when-creating-a-daemon (2认同)