代码之家  ›  专栏  ›  技术社区  ›  Simon Fromme

在解除Python脚本的监视后,无法读取外部命令的标准输出

  •  0
  • Simon Fromme  · 技术社区  · 7 年前

    我写了一个RPC服务器 foo 用我用的蟒蛇

    start-stop-daemon --start --quiet --background \
                      --make-pidfile \
                      --pidfile /var/run/foo.pid \
                      -- /opt/foo
    

    subprocess.check_call(some_cmd) os.popen(some_cmd).read(1048576) 在我的守护进程中,与启动时的情况相比,返回一个空字符串 在前景。

    外部程序 some_cmd

    start-stop-daemon 调用或我的Python代码来修复这个问题?

    subprocess.check_output('echo "Hello World"', shell=True) 仍然正常工作,而 subprocess.check_output('/etc/init.d/apache2 --nocolor reload', shell=True) 现在是空的。

    2 回复  |  直到 7 年前
        1
  •  1
  •   anand    7 年前

    如果过程中存在终端,这是可能的。当被妖魔化时,没有终点。

        2
  •  0
  •   Simon Fromme    6 年前

    我自己解决的。问题是 start-stop-daemon 正在设置环境变量 EINFO_QUIET 当你和 --quite

    当设置此变量时,OpenRC init脚本将不向stdout打印任何内容。一个简单的

    import os
    os.environ["EINFO_QUIET"] = "NO"
    

    解决问题。