我有一个CentOS服务器,它当前正在运行一个java jar应用程序。我需要编写一个php脚本来通过它的输入流与正在运行的程序进行通信。 java程序将其输出输出到日志文件,所以我不需要访问输出流。如何写入已运行的java程序的输入流?
我不想重新启动程序,只需访问正在运行的进程并与之交互即可。
有人能指出我正确的方向吗?
我有一个CentOS服务器,它当前正在运行一个java jar应用程序。我需要编写一个php脚本来通过它的输入流与正在运行的程序进行通信。 java程序将其输出输出到日志文件,所以我不需要访问输出流。如何写入已运行的java程序的输入流?
我不想重新启动程序,只需访问正在运行的进程并与之交互即可。
有人能指出我正确的方向吗?
如果便携性对您来说不是一件大事,为什么不创建自己的管道?我对Java应用程序了解不多,但看看“mkfifo”函数/命令。
首先,找到应用程序的ProcessID。您可以使用做到这一点:
ps -Af | grep java
由于您使用的是Java,你可能会觉得与查找PID的jps
命令更方便。
我假设运行的应用程序的PID为12345。这足以发出命令:
cat >/proc/12345/fd/0
而且不管你输入将被放置在该应用程序的标准输入。请注意,fd
包含应用程序使用的文件描述符,我假设第0个文件描述符将始终为stdin
。
使用PHP写入文件(并因此被应用程序用作输入)也是可能的。
搜索**命名管道**(http://ubuntuforums.org/showthread.php?t=372505) – PeterMmm 2013-03-25 17:25:14
或考虑一个环回套接字连接 - 请参阅Peter Lawrey对[此问题](http:// stackoverflow.com/questions/4112480/named-pipes-between-java-and-cc-programs)。 – 2013-03-25 17:32:18
我去了一个回送套接字连接。 – noahnu 2013-04-01 18:24:19