0

私はマックを使用しています。myapp などの C++ アプリケーションがあります。通常、アプリケーションは ./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++ アプリケーションに新しい画像が保存されているかどうかを確認させることができることはわかっています.メソッドを呼び出します.しかし、この方法では、Pythonアプリケーションに結果を伝えることができません*/

4

2 に答える 2

1

はい、やりたいことはできますが、コマンドライン引数は使用できません。それらは、開始時に一度だけプログラムに渡されます。リクエストを待つために、ファイルやパイプなどの他のストリームを定期的にチェックして新しいデータを探すことができます。

于 2013-01-30T13:17:12.093 に答える
0

ペーストボードを使用してそれを行うことができるように見え ます

./myappcommandsender のような新しいプログラムを作成するか、サービスの起動ルーチンに "if statement@" を追加する必要があります。

于 2013-01-30T13:18:42.530 に答える