【发布时间】:2017-11-06 14:03:40
【问题描述】:
我正在使用 Linux Ubuntu 来创建守护进程。我参考了以下教程来了解使用 fork 和 setid 的守护程序代码的基本实现:
http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html
我有一个应用程序,我必须在其中创建多个守护进程并在它们之间进行通信。
例如: 我有 3 个源文件,我想将它们作为 3 个不同的守护进程。我在这些源文件中定义了函数,我想从 main() 或其他源文件中调用它们。
究竟应该如何创建多个守护进程,即每个单独的源文件都充当单独的守护进程? (我在这里可能错了,但我打算为这些文件函数的函数创建线程,该函数将有自己的 PID,然后我执行 fork 和 setid 以及其余进程在这里创建一个守护进程,这可能会创建个人多个守护进程?)
我应该如何管理这些守护进程之间的通信? 例如:如果我想从源文件中调用某个函数,并且该源文件是一个守护进程,那么我应该如何从该守护进程中调用一个函数?
我正在互联网上搜索有关多个守护进程及其相互通信的信息,但如果有人可以帮助我,那就太好了。
谢谢。
【问题讨论】:
-
查找“fork and exec”并遵循众多食谱之一。
-
编写三个不同的程序,每个程序都有一个主程序。当你执行这些成为三个进程。您可以使用消息队列在这些进程之间传输数据。
-
上面建议的两种解决方案都可以正常工作。我创建了单独的程序,每个程序都有一个主程序,并将它们中的每一个都作为单独的守护进程。除了使用信号外,我还可以中断进程并使用 ZeroMQ 进行数据传输。使用 fork 和 execvp 的方法也可以创建多个守护进程。感谢您的建议.. 它工作了
标签: c linux process daemon communication