2010-10-05 82 views
0

我有一個java服務器應用程序,當它運行時,你可以通過stdin發送命令與它交互。我想編寫一個可以將這些命令發送給它的Web界面。發送命令到後臺作業stdin

爲了做到這一點,我需要一些從php獲取命令的方式來執行此後臺作業的標準輸入。有沒有辦法從控制檯做到這一點?或者可能編寫一些控制服務器作業並可以訪問其標準輸入的封裝器?這可以在python中完成嗎?

+0

請提供有關應用程序服務器的更多信息。你想發送什麼樣的命令?你想與什麼接口? – Gordon 2010-10-05 09:24:33

回答

0

您可以將其stdin連接到FIFO,然後讓另一個守護進程也連接到FIFO併發送命令。儘管讓控制守護進程啓動Java守護進程可能會更好,但是如果控制守護進程出於某種原因,Java守護進程不會關閉。

0

您可以使用Python subprocess module

調用外部shell命令的例子:

from subprocess import call 

try: 
    retcode = call("mycmd" + " myarg", shell=True) 
    if retcode < 0: 
     print >>sys.stderr, "Child was terminated by signal", -retcode 
    else: 
     print >>sys.stderr, "Child returned", retcode 
except OSError, e: 
    print >>sys.stderr, "Execution failed:", e 
0

,你可以使用命令行,像這樣

wrapper.php(使用反引號)

$cmd = `php /path/to/background_script.php &`; 
echo $cmd; 

background_script.php

echo "Hello world in 5 seconds\n"; 
sleep(5); 
echo "Hello again\n";