将命令发送到后台作业stdin

时间:2010-10-05 09:20:06

标签: php python

我有一个java服务器应用程序,当它运行时,你可以通过stdin与它交互发送命令。我想写一个可以发送这些命令的Web界面。

为了做到这一点,我需要一些方法从php获取命令到stdin这个后台工作。有没有办法从控制台做到这一点?或者可能写一些控制服务器作业并可以访问其标准输入的包装器?这可以在python中完成吗?

3 个答案:

答案 0 :(得分:0)

您可以将其stdin连接到FIFO,然后让另一个守护进程连接到FIFO并发送命令。尽管让控制守护进程启动Java守护进程可能会更好,这样如果控制守护程序由于某种原因而无法关闭,那么Java守护进程就不会关闭。

答案 1 :(得分: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

答案 2 :(得分: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";