各プロセスを制御しながらプロセスを実行する必要があります。スレッドやpid、またはそのために必要なものを格納するクラスを作成したいと考えています。
私は現在、C 関数 execvp を使用して 1 つの外部アプリケーションを実行し、シェル スクリプトから環境をロードするプログラムを持っています。だから私の現在のプログラムはブロックしています。しかし、私はそれを自由に実行し続けることができる必要があり、現在実行中のアプリケーションを終了するか、新しい外部アプリケーションを開始するときまでにのみ実行する必要があります.
私の現在のアプローチは、execve 関数を使用するスレッドを作成することです。しかし、私が見る限り、スレッドはブロックされます。
スレッドにある可能性のあるコード(変数を使用):
char *argv[] = { "/bin/bash", "-c", "myApplication", 0 };
execve(argv[0], &argv[0], environment.data());
呼び出されるアプリケーションは、パラメータを含む外部セットアップ ファイルによって名前が付けられるコードでおそらく固定されていません。
私の実際の質問は、C ++でそのような外部アプリケーションを「管理」するためのより良い方法はありますか? いくつかの準備ができているソリューション (クラス、ライブラリ)? そうでない場合、これが実際の方法である場合、スレッドを終了するにはどうすればよいですか。終了呼び出しを使用することは悪い習慣であると言われています。それは私がよく読むものです。
これがフォーラムにとって十分に具体的であることを願っています。これ以上具体的にする方法がわからないからです。ここで作成したいものについてさらにヒントが必要な場合は、コメントでお気軽にお問い合わせください。
更新:
DBus などへ:
追加情報 開始したいすべてのプロセスを書いているわけではありません。したがって、コードを持っていても変更したくないサードパーティのアプリケーションを起動するために使用されます。