同じ親プロセス内で (異なるスレッドから) 2 つの対話型 bash プロセスをフォーク (実行) すると、親プロセスが停止するか、2 番目の対話型 bash がバックグラウンドになり、さらに対話型属性とバックグラウンド属性の競合により、2 番目の bash が 100% の CPU を消費する原因となります.
これは Linux では発生していますが、Cygwin では発生していません。
例:
同じJavaプロセスで(他のプログラミング言語でも同じことが起こっています):
スレッド
Process process1; String[] command1 = new String[] { "bash", "-l", "-c", "bash -i -l 2>&1" }; process1 = Runtime.getRuntime().exec(command1);
スレッド
Process process2; String[] command2 = new String[] { "bash", "-l", "-c", "bash -i -l 2>&1" }; process2 = Runtime.getRuntime().exec(command2);
このような動作の原因は何ですか?
上記の例が 2 つの別々のプロセスで実行される場合、問題はありません。したがって、これらの bash プロセスが同じルートの親プロセスを持っているという事実に関連しているようです (そして、tty と制御信号を混乱させる可能性があります)。
手伝ってくれてありがとう。