次のシナリオがあります。 2つのプログラムがあり、一方はバックグラウンドで実行され、もう一方は前で実行されます。後のプログラムは以前のプログラムのために何かをしています。バックグラウンドプログラムが必要な設定を完了すると、最初のプログラムのバックアップサポートが完了し、これでフォアグラウンドプログラムを終了する必要があることを知らせ、バックグラウンドプログラムが最初のプログラムを制御します。
ヘルプは非常に重要です。 Linuxでこのシナリオをどのように実行できますか?どんな方向やアドバイスでも高く評価いたします。
ベストアンサー1
指定された要件を理解することは困難です。まず、追加の説明が必要な部分について説明します。
この記事を「移行」とマークしたので、これらのプログラムがすでに存在し、いくつかの非Linuxアーキテクチャで実行されていることが知られているとします。プロセス間通信とシグナリングの概念はかなり一般的ですが、現在実行されているプログラムのアーキテクチャとオペレーティングシステムを説明するのは非常に役立ちます。
テキストには2つの異なるプロセスのみが記載されていますが、「マルチスレッド」ラベルも表示されます。どちらのプログラムも実際にマルチスレッドですか?
私は最初にシェルによって開始されたフォアグラウンドおよびバックグラウンドプロセスに関連する「以前」と「以降」を考えました(表示されています)。ただし、これはプロセス自体の関係ではなく、プロセスが開始されるメカニズムとの関係です。
私はあなたがパラメータを入力するためのGUIを提供する「フロントエンド」プログラムに言及していると思い、そのパラメータが「バックエンド」プログラムに渡されると自動的にそうなります。フロントエンドは、フィードバックや結果を提供するためにGUIを再利用できるまでしばらく停止する必要があります。
主な問題は、2つのプログラム間のパラメータ通信です。私の知る方法は、共有メモリ、パイプストリーム(名前なしパイプ、名前付きパイプ、ソケットなど)です。信号はデータストリームではなくイベントでのみ動作します。続行するには、既存のメカニズムを理解する必要があります。
あるプログラムが別のプログラムを「制御」することは不可能です。親と子の関係があるかもしれませんが(フロントエンドまたはバックエンドが親である可能性があります)、関係は元に戻すことはできません。親プロセスの機能は、親プロセスと子プロセスの間の通信を事前に調整することです。あるいは、親プロセスが互いに通信できる2つの子プロセス(兄弟)を起動することもできます。
親プロセスまたは子プロセスは互いにシグナルを送信でき、実際には各シグナルは異なるプロセスを終了できます。関係を終了するより一般的な方法は、関係間のコミュニケーションラインを閉じることです。これは、シャットダウンプロセスで完全なシャットダウンを提供する機能を提供します。
これらのプログラムをすでに所有している場合は、現在の対話方法を正確に把握して、最も近いLinux機能のマッチングを推薦することができます。他のアプローチがより適切かもしれませんが、既存のコードを大幅に変更する必要があるモデルを提案することは意味がありません。
Linuxがこれらのプログラムが協力するために必要な環境を提供できることはほぼ確実です。問題は、シミュレーションが必要な既存のメカニズムについて、実際にプログラムのソースコードにアクセスできるかどうか、およびそのソースコードが書かれた言語についてはまだ何も知らないことです。