我有一個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