2015-05-19 81 views
0

我想寫入正在運行的進程(不是Java)的stdin。如何直接獲取Process對象或OutputStreamRuntime.getRuntime()只幫助我產卵新的東西,沒有找到現有的過程。從已經運行的進程中獲取OutputStream

+0

你的標題說Get OutputStream,但你的描述說明如何寫入stdin。那它是哪一個? –

+0

我不認爲你想要做什麼是可能的。 – GhostCat

+0

我認爲你需要使用共享內存或管道來進行進程之間的通信。可能是錯誤的,也許別人會糾正我。 – npinti

回答

2

這看起來可能在Linux上,不知道其他地方。搜索"get stdin of running process"揭示了幾個有前途的期待討論:從本質上講

,您可以通過/proc/$pid/fd/0寫入過程的第0文件描述符。從那裏,你只需要打開一個OutputStream到那條路。

我只是測試這一點(不是Java的一部分,這可能是簡單的)和它的工作爲做廣告:

Shell-1 $ cat 

該塊,早在等待標準輸入

Shell-2 $ ps aux | grep 'cat$' | awk '{ print $2 }' 
1234 
Shell-2 $ echo "Hello World" > /proc/1234/fd/0 

現在殼牌-1 :

Shell-1 $ cat 
Hello World 

請注意,這不會關閉進程的標準輸入。您可以繼續寫入文件描述符。

相關問題