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

如何写入已经运行的java程序的输入流?,java,php,linux,Java,Php,Linux,我有一个CentOS服务器,目前正在运行java jar应用程序。我需要编写一个php脚本,通过它的输入流与这个正在运行的程序通信。java程序将其输出输出到日志文件,因此我不需要访问输出流 我不想重新启动程序,只要访问正在运行的进程并与之交互即可 有人能给我指出正确的方向吗?首先,找到应用程序的ProcessID。您可以使用以下方法进行操作: ps -Af | grep java 由于您使用的是java,因此使用jps命令查找PID可能会更方便 我假设正在运行的应用程序的PID为12345。

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

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


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

首先,找到应用程序的ProcessID。您可以使用以下方法进行操作:

ps -Af | grep java
由于您使用的是java,因此使用
jps
命令查找PID可能会更方便

我假设正在运行的应用程序的PID为12345。发出以下命令即可:

cat >/proc/12345/fd/0
您输入的任何内容都将被输入到该应用程序的标准输入中。请注意,
fd
包含应用程序使用的文件描述符,我认为第0个文件描述符将始终是
stdin


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

如果可移植性对您来说不是一个大问题,为什么不创建自己的管道呢?我不太了解java应用程序,但是看看MKFIFO函数/命令。< /p>搜索命名管道()或考虑回环套接字连接——见Peter Lawrey的答案。我用回环套接字连接。我很确定,只有STDIN恰好是一个PtY设备时才能工作。如果它是一个常规文件,那么您只需重写该文件。如果它是/dev/null,那么我怀疑什么也不会发生。
cat
给我“文本文件忙”。