Bash 操作员 & 不工作

Bash 操作员 & 不工作

根据 bash 参考,我们可以通过以 & 字符结尾来给出非阻塞命令。但是,当我尝试以下命令时它不起作用:

python -m SimpleHTTPServer 8080&

我打算这样做的原因是我想启动内置的 python web 服务器作为另一个更大的程序的一部分,该程序也是用 python 编写的。如何在非阻塞/守护进程模式下发出此命令?我什至尝试在 python 中使用“subprocess.Popen()”执行此命令,这也应该创建一个非阻塞进程,但即使这样也不起作用。

编辑:这是我启动网络服务器的Python代码部分(添加“nohup”似乎可以解决问题):

pid_webserver = execute("nohup python -m SimpleHTTPServer 8080 &",wait=False,shellexec= True)
#pid_webserver = execute("python -m SimpleHTTPServer 8080 &",wait=False,shellexec= True)

def execute(command,errorstring='', wait = True, shellexec = True):
    try:
        print 'command=' + command
        p=subprocess.Popen("gksu '" + command + "'", shell=shellexec,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        if wait:
            p.wait()
            result=get_stdout(p)
            return result
        else:
            print 'not waiting'
            return p
    except subprocess.CalledProcessError as e:
        print 'error occured:' + errorstring
        return errorstring

答案1

作品&。但我认为你正在寻找的是nohup python -m SimpleHTTPServer &

但我认为你也应该看看http://docs.python.org/2/library/simplehttpserver.html

答案2

'&' 在这里不起作用...它是一个 bash 操作符,在你的脚本中你没有使用 bash 来执行命令,你是从 python 脚本执行它 - 这就是为什么它永远不会工作。

尝试 :

import os
os.system("python -m SimpleHTTPServer 8080 &")

相关内容