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