使用CLI生成后台进程以控制它

时间:2018-01-15 19:24:09

标签: linux bash sockets raspberry-pi c++14

为了给出背景,我正在建立一个物联网项目,要求我监控一些传感器输入。这些包括温度,流体流量和瞬时按钮切换。该程序必须根据这些输入监视,报告和控制其他输出功能,但也由基于Web的前端管理。我一直试图做的是有一个在后台运行但可以通过shell命令控制的程序。

我的目标是能够在命令行(bash)上执行以下操作:

pi@localhost> monitor start
sensors are now being monitored!
pi@localhost> monitor status
Temp: 43C
Flow: 12L/min

我目前的解决方案是创建两个独立的程序,一个位于后台,另一个只是一个轻量级的CLI。后台进程侦听CLI用于向其发送命令的双向Linux套接字文件。然后,它通过所述CLI的套接字文件发回响应,然后进行处理/显示。这让我感到很头疼,但与使用网络套接字或映射内存相比,这似乎是更好的选择。当程序不正确地终止时,我偶尔会遇到套接字文件访问问题,这需要我通过手动删除套接字文件来“清理”目录。

我也希望程序可以确保在任何给定时间只运行一个监控程序实例。我目前通过捕获我的pid并将其保存到我可以在程序启动时查找的文件来实现此目的。如果文件存在,我会自行终止并出错。我真的不喜欢这种方法,因为它对我来说太难过了。

所以我的问题是:有没有更好的方法来构建一个可以通过命令行轻松控制的后台进程?或者我目前的解决方案可能是最好的解决方案吗?

提前感谢任何建议!

0 个答案:

没有答案