1
如果在同一父進程中(來自不同線程)fork(exec)兩個交互式bash進程導致父進程停止或第二個交互式bash進入由於交互和背景屬性的衝突,進一步導致第二個bash消耗100%CPU的背景。分叉兩個交互式bash進程導致父進程停止或第二個bash去後臺
這在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);
是什麼導致了這種行爲?
如果上面的例子在兩個單獨的進程中執行,則沒有問題。 因此,它似乎與事實有關,這些bash進程具有相同的根父進程(可能會混淆tty和控制信號)。
感謝您的幫助。
你是如何處理的標準,標準輸出和標準錯誤的每個過程1和過程2的? – 2013-02-17 19:59:27
存在處理io流的單獨線程。 – user855433 2013-02-17 21:02:06