0

我正在使用 Mac。我有一个 c++ 应用程序,例如名为 myapp。通常我可以通过 ./myapp 调用应用程序。

myapp 应用程序能够处理图像并返回一些文本结果。实际上 myapp 应用程序一开始总是要分配大量内存,所以如果我必须多次运行它会有点慢。

现在我想这样做

  1. myapp 将作为始终运行的服务运行。我将在一开始就通过 ./myapp 启动 myapp。

  2. 当我有要处理的图像时,我只想输入类似 ./myapp arg1 arg2 的内容,在这里我不想启动一个新进程,我想将新参数传递给已经运行的应用程序并返回结果。

为了实现它,我该怎么做?我知道 myapp 必须包含一个等待请求的 while 循环。但是如何在运行时多次传递参数?

/* 它类似于 ngix 服务器。一开始你输入 ngix 启动服务,在它运行的时候,你仍然可以通过“ngix 参数”传递参数,这个命令不会创建一个新进程。*/

/* 实际上我有一个 C++ 图像处理应用程序和一个 python http 服务器。现在我要做的是,当 python 服务器从客户端接收到图像时,我通过 ./myapp imagelocation 启动一个新进程。myapp 将处理结果返回到命令行,python 通过 "os.popen("./myapp imagelocation,"r").read().strip()" 捕获它。但正如我所说,C++ 应用程序需要太多时间初始化,所以我只想初始化一次,一旦我有图像,我只需将图像传递给 c++ 应用程序。当然我知道我可以让 C++ 应用程序检查是否保存了新图像,并调用方法。但是这样,我不能告诉python应用程序结果*/

4

2 回答 2

1

是的,你可以做你想做的事,但你不能使用命令行参数。当程序启动时,它们只传递给您的程序一次。要等待请求,您可以定期检查一些其他流,例如文件或管道以获取新数据。

于 2013-01-30T13:17:12.093 回答
0

看起来你可以使用粘贴板 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/SysServices/Articles/using.html#//apple_ref/doc/uid/20000854-97617

您需要创建像 ./myappcommandsender 这样的新程序,或者只需在服务启动例程中添加“if statement@”。

于 2013-01-30T13:18:42.530 回答