0
我想寫入正在運行的進程(不是Java)的stdin。如何直接獲取Process
對象或OutputStream
? Runtime.getRuntime()
只幫助我產卵新的東西,沒有找到現有的過程。從已經運行的進程中獲取OutputStream
我想寫入正在運行的進程(不是Java)的stdin。如何直接獲取Process
對象或OutputStream
? Runtime.getRuntime()
只幫助我產卵新的東西,沒有找到現有的過程。從已經運行的進程中獲取OutputStream
這看起來可能在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
請注意,這不會關閉進程的標準輸入。您可以繼續寫入文件描述符。
你的標題說Get OutputStream,但你的描述說明如何寫入stdin。那它是哪一個? –
我不認爲你想要做什麼是可能的。 – GhostCat
我認爲你需要使用共享內存或管道來進行進程之間的通信。可能是錯誤的,也許別人會糾正我。 – npinti