我想写一个正在运行的进程的stdin(而不是Java)。如何直接获取Process
对象或OutputStream
? Runtime.getRuntime()
只能帮助我产生新东西,而不是找到现有的流程。
答案 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
请注意,这并不会关闭进程的标准输入。您可以继续写入文件描述符。