我目前正在开发一个项目,需要在“主”进程的控制下运行许多进程,该进程通过TCP接收远程命令并告诉子进程要做什么(例如:他们应该采取什么样的文件,他们应该执行什么样的处理操作。)
我想出了以下想法,将命令/配置传递给子进程:
有任何想法/建议吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
通过管道的文本协议怎么样?
文本协议总是比二进制协议更好,因为它们更容易测试,更容易的测试通常意味着更少的错误。
答案 2 :(得分:0)
您还可以使用消息队列或带信号量的共享内存。
您还可以查看一个名为ActiveMQ的Apache项目,该项目允许将消息分派到订阅队列等。它非常强大且灵活,并且有C接口。如果您有许多需要发送消息的机器/网络,它是理想的选择。
答案 3 :(得分:0)
像beanstalkd或resque这样的轻量级消息队列似乎是正确的复杂程度。使用inotify的文件也可以工作; inotify被设计为事件队列。您可以在使用incrontab进行烘焙之前尝试使用它。{xml,json} -rpc(稍微)更复杂,但也更标准,因为它们使用http。但是,对于非阻塞交互,消息队列隐喻比rpc更合适。
答案 4 :(得分:0)
supervisord工具可能很有用。这是一个客户端/服务器系统,允许其用户监视和控制类UNIX操作系统上的许多进程。