我有一个主程序 X ,它从我的网络摄像头获取信息
我想在执行时实时配置 X
据我所知,其中一种常见的方法是使用IPC,如命名管道/ Unix套接字/ Internet套接字等。但我想避免每个调用者必须单独打开一个套接字/命名管道,并每次都进行通信。
简而言之,我想要一个名为 Y 的帮助程序,我可以通过以下方式使用它:
Y set-fps=15
Y show-frame=true
Y get-fps (should return 15)
我想在/ usr / bin / *中播放这个帮助程序 Y (或者将其放在$ PATH directoreis中的一个),以便它可以从命令行执行。
我有什么选择来获得此功能。我的约束如下:
(i)程序 X 可以是C ++ / Python
(ii)多个客户可以同时拨打 Y 。
我想这些系统在Linux上很常见,你有nmcli
等程序与network-manager
等服务进行交互?
答案 0 :(得分:0)
很抱歉将这篇文章回答,我仍然无法发表评论。
我可以看到的方法之一是:
当您的程序从网络摄像头获取帧时,肯定存在循环或冗余自动机。
通过这种方式,您可以在一个块中在内核内存中分配一些寄存器,每个寄存器都是参数之一。
然后,在每个循环中,您的X程序可以从该内核空间读取不同的参数。另一方面,每个想要修改参数的客户端也将访问此内核空间,并修改所需的值。
然后,您必须使用信号量保护内核空间,以进行任何写入或读取操作。(可以使用互斥锁,但是您可能需要一些编写器/读取器实现)
当然,与每个参数的保护相比,这在性能上并不是最佳的,但是你必须只处理一个信号量,而一个简单的互斥体就可以完成这项任务。它当然也不如使用管道或插座进行通信,但是使用它们,你仍然需要保护参数的读写...