如何写入已经运行的java程序的输入流?

时间:2013-03-25 17:19:35

标签: java php linux

我有一个CentOS服务器,它当前正在运行一个java jar应用程序。我需要编写一个php脚本,通过它的输入流与这个正在运行的程序进行通信。 java程序将其输出输出到日志文件,因此我不需要访问输出流。

我不想重新启动程序,只需访问正在运行的进程并与之交互。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

首先,找到应用程序的ProcessID。你可以使用:

ps -Af | grep java

由于您使用的是java,使用jps命令查找PID可能会更方便。

我假设正在运行的应用程序的PID是12345.它足以发出命令:

cat >/proc/12345/fd/0

无论你输入什么,都会被放入该应用程序的标准输入中。请注意,fd包含应用程序使用的文件描述符,我认为第0个文件描述符始终为stdin

使用PHP写入文件(因此被应用程序作为输入使用)也是可能的。

答案 1 :(得分:1)

如果便携性对您来说不是一件大事,为什么不创建自己的管道呢?我对Java应用程序了解不多,但看看“mkfifo”函数/命令。