2015-05-19 24 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 

请注意,这不会关闭进程的标准输入。您可以继续写入文件描述符。

相关问题