我正在使用 Mac。我有一个 C++ 应用程序,例如叫我的应用程序。通常我可以通过 ./myapp 调用应用程序。
myapp 应用程序能够处理图像并返回一些文本结果。实际上myapp应用程序一开始总是要分配很多内存,所以如果我必须多次运行它会有点慢。
现在我想做这个
myapp 将作为始终运行的服务运行。我将在最开始通过./myapp 启动myapp。
当我有一个图像要处理时,我只想输入类似 ./myapp arg1 arg2 的内容,这里我不想启动一个新进程,我想将新参数传递到已经运行的应用程序中并返回结果。
为了做出来,我该怎么做?我知道 myapp 必须包含一个等待请求的 while 循环。但是如何在运行时多次传递参数?
/* 这有点像例如恩吉克斯服务器。一开始你输入ngix来启动服务,当它运行时,你仍然可以通过“ngix argument”来传递参数,这个命令不会创建一个新的进程。 */
/* 实际上我有一个 C++ 图像处理应用程序和一个 python http 服务器。现在我要做的是,当 python 服务器从客户端接收到图像时,我通过 ./myapp imagelocation 启动一个新进程。 myapp 将处理结果返回到命令行,python 通过“os.popen(”./myapp imagelocation,”r”).read().strip()” 捕获它。但正如我所说,C++ 应用程序需要太多时间初始化,所以我只想初始化一次,一旦我有了图像,我就将图像传递给 C++ 应用程序。当然我知道我可以让 C++ 应用程序检查是否保存了新图像,并调用该方法。但是通过这种方式,我无法将结果告诉python应用程序 */
最佳答案
是的,你可以做你想做的,但你不能使用命令行参数。当程序启动时,它们只传递一次给您的程序。要等待请求,您可以定期检查一些其他流,例如文件或管道以获取新数据。
关于c++ - 是否可以在运行时从命令行调用方法或传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14604910/