2016-10-25 18 views
0

私はLinux環境で大規模な計算アプリケーションを実行しています。私の目標は、シェルウィンドウからアプリケーションと通信し、アプリケーションから結果を得てシェルで印刷できるインターフェイスを作成することです。シェルから実行中のプロセスとの通信

私は、ファイルに無限に素数を書き込むアプリケーションを持っていると言います。あなたは、アプリケーションがやって何を知りたい場合は、一定時間後に、それは

$[ pid ] "Display current number in check"; 
$The number, 17559323 is currently checked if its a prime. 

それは、通常のユーザーのために可能であるべきと私は、プロンプトで「$」を持っていたことを意図的である、のようなインターフェイスを作成することが可能ですコミュニケーションをとること。シグナルは特権実行が必要です。私はこのアプリケーションの多くのインスタンスを実行しているかもしれませんが、ソケットを実際にどのように役立てることができないのか分かりません。 シェルから実行中のプロセスと通信する上でのあらゆる方向性が非常に役に立ちます。

+0

あなたのアプリケーションをコマンドでソケットでリッスンさせることができます。クライアントプログラムは、そのソケットに接続し、コマンドを送信し、応答を読み取り、それらをユーザーに表示することができます。アプリケーションの複数のインスタンスを実行している場合は、それぞれにソケットをオープンしてください(PIDなどの後に名前を付けることもできます)。 – larsks

+0

これは、私が探しているクライアントレスのインターフェイスを私に与えません。また、私の同僚がアプリケーションと通信するために、小さなクライアントアプリケーションを浮かべておく必要があります。ツールセットは自己完結型ではありません。 (bash stdin/outのようなosツールではサポートされていません) – Veera

+0

ソケットの代わりに、組み込みのhttpサーバにしてください。これで 'curl'でクエリを実行できます。 – larsks

答えて

0

使用ログ:クライアントできるのgrep(またはが尾)これは今何が起こっているか確認するためにログに記録します。常にログファイルに書き込むか、信号を受信した後に必要な情報をファイルにダンプするシグナルハンドラを作成することができます。

+0

これはシェルを介した実行中のプロセスとの通信の問題の一部には答えません。実行中のプロセスの場合、そのようなログを書き込むには、1.そのインスタンスの実行のステータスを誰もポーリングしなければ、非常に非効率的です。2.ハードディスクのr/wサイクルのためにアプリケーションが遅くなり、3がスペースをダンプします。主な目的は、情報のポーリングであり、実行の文書化ではありません。 – Veera

関連する問題