如何开始在类 Unix 操作系统(如 Linux)中编写守护进程?
Posted
技术标签:
【中文标题】如何开始在类 Unix 操作系统(如 Linux)中编写守护进程?【英文标题】:How do I get started writing a daemon process in a Unix-like operating system, like Linux? 【发布时间】:2010-09-01 16:46:41 【问题描述】:我正在用 php 做一个工具供我个人使用。但是 PHP 非常慢,而且我需要做的任务需要很多时间,所以我将在 c++ 中创建一个守护程序并将其保留在后台(它将在 VPS 中运行)。
PHP 会通过一个简单的 tcp 套接字(我将尝试设计/使用一个简单的 IPC 协议)连接到守护进程以提交任务。守护进程将使用一个简单的 FIFO 队列来管理任务。 PHP 只会开始任务,但它不会等到结束,因为它可能需要几分钟(PHP 也会监视任务 - 但这是另一个主题)。
Web/PHP 界面完全不会成为问题。但我对 unix 守护进程编程没有经验。我已经在 linux 上使用 c++ 制作了简单的控制台程序,所以我只需要一本手册/书籍/指南和建议即可开始开发 unix 守护进程。
谢谢。
【问题讨论】:
netzmafia.de/skripten/unix/linux-daemon-howto.html “很长”是什么意思?您可能需要考虑使用 C++ 以外的其他语言,例如Python 或 Perl,两者都有强大的工具来完成这项工作。 我的意思是这需要很多时间。我更喜欢使用 C++,因为我有这方面的经验,而且我不知道 python 和 perl。另外我认为 C++ 更快,它处于较低的水平。 【参考方案1】:http://www.enderunix.org/docs/eng/daemon.php 提供了一个相当全面但简短的介绍,其中包含似乎涵盖所有重要部分的示例代码。如果您愿意在纸上花一些钱(值得,恕我直言),“UNIX 环境中的高级编程(第 2 版)”中有更深入的描述。
上面的链接不涉及初始化脚本,但您可以通过一些搜索来弄清楚 - 您所需要的只是启动守护程序代码的某种方式以及稍后发送信号的某种方式 - 通常,您编写守护进程的 PID 到 /var/run/XXX 文件。
【讨论】:
上面的链接只有一个分叉。规范的方法,我相信“UNIX 环境中的高级编程”所建议的方法是,你应该分叉两次。 ***.com/questions/881388/…以上是关于如何开始在类 Unix 操作系统(如 Linux)中编写守护进程?的主要内容,如果未能解决你的问题,请参考以下文章