从已经运行的进程获取OutputStream

时间:2015-05-19 15:24:31

标签: linux

我想写一个正在运行的进程的stdin(而不是Java)。如何直接获取Process对象或OutputStreamRuntime.getRuntime()只能帮助我产生新东西,而不是找到现有的流程。

1 个答案:

答案 0 :(得分:2)

这看起来可能在Linux上,不知道其他地方。搜索"get stdin of running process"显示了一些有希望的讨论:

基本上,您可以通过/proc/$pid/fd/0写入进程的第0个文件描述符。从那里,您只需要打开OutputStream到该路径。

我刚刚对此进行了测试(不是Java部分,大概是直截了当的),它的工作方式与广告一样:

Shell-1 $ cat

这会阻塞,等待stdin

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

现在回到Shell-1:

Shell-1 $ cat
Hello World

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