名前付きパイプを使用して通信する複数のC++実行可能ファイルがあるプロジェクトに取り組んでいます。メインアプリケーション(App1)は、残りのアプリケーションを生成します。STDIN
スポーンすると、以下を使用して子が閉じます。
close(STDIN_FILENO);
また、子プロセスに固有の他のファイルにリダイレクトSTDOUT
します。STDERR
これにより、App1からの出力はApp1からのみになり、子は含まれなくなります。また、App1がからの入力を受け入れSTDIN
、子プロセスによってキャプチャされないようにすることもできます。
子プロセスの1つは、Qtアプリケーションです。スポーンされると、可能な限り多くのCPUを使用しているため、コンピューターの速度が大幅に低下します。子プロセスを閉じないとSTDIN
、この動作は停止します(ただし、STDIN
メインプロセスの代わりに子がキャプチャします。これは望ましくありません)。
なぜこれが発生し、QtアプリケーションがすべてのCPUサイクルを使用しないようにするにはどうすればよいですか?