• <legend id='miJ78'><style id='miJ78'><dir id='miJ78'><q id='miJ78'></q></dir></style></legend>
      <bdo id='miJ78'></bdo><ul id='miJ78'></ul>
      <i id='miJ78'><tr id='miJ78'><dt id='miJ78'><q id='miJ78'><span id='miJ78'><b id='miJ78'><form id='miJ78'><ins id='miJ78'></ins><ul id='miJ78'></ul><sub id='miJ78'></sub></form><legend id='miJ78'></legend><bdo id='miJ78'><pre id='miJ78'><center id='miJ78'></center></pre></bdo></b><th id='miJ78'></th></span></q></dt></tr></i><div id='miJ78'><tfoot id='miJ78'></tfoot><dl id='miJ78'><fieldset id='miJ78'></fieldset></dl></div>

      <small id='miJ78'></small><noframes id='miJ78'>

    1. <tfoot id='miJ78'></tfoot>

      1. 在后台执行子进程

        时间:2023-07-21

            <bdo id='pJo40'></bdo><ul id='pJo40'></ul>

              <small id='pJo40'></small><noframes id='pJo40'>

                <legend id='pJo40'><style id='pJo40'><dir id='pJo40'><q id='pJo40'></q></dir></style></legend>
              • <tfoot id='pJo40'></tfoot>

                    <tbody id='pJo40'></tbody>
                  <i id='pJo40'><tr id='pJo40'><dt id='pJo40'><q id='pJo40'><span id='pJo40'><b id='pJo40'><form id='pJo40'><ins id='pJo40'></ins><ul id='pJo40'></ul><sub id='pJo40'></sub></form><legend id='pJo40'></legend><bdo id='pJo40'><pre id='pJo40'><center id='pJo40'></center></pre></bdo></b><th id='pJo40'></th></span></q></dt></tr></i><div id='pJo40'><tfoot id='pJo40'></tfoot><dl id='pJo40'><fieldset id='pJo40'></fieldset></dl></div>
                  本文介绍了在后台执行子进程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有一个 python 脚本,它接受输入,将其格式化为调用服务器上另一个脚本的命令,然后使用子进程执行:

                  I have a python script which takes an input, formats it into a command which calls another script on the server, and then executes using subprocess:

                  import sys, subprocess
                  
                  thingy = sys.argv[1]
                  
                  command = 'usr/local/bin/otherscript.pl {0} &'.format(thingy)
                  command_list = command.split()
                  subprocess.call(command_list)
                  

                  我将 & 附加到末尾,因为 otherscript.pl 需要一些时间来执行,而且我更喜欢在后台运行.但是,该脚本似乎仍然在执行,而没有将控制权交还给 shell,我必须等到执行完成才能返回到我的提示符.还有其他方法可以使用 subprocess 在后台完全运行脚本吗?

                  I append & to the end because otherscript.pl takes some time to execute, and I prefer to have run in the background. However, the script still seems to execute without giving me back control to the shell, and I have to wait until execution finishes to get back to my prompt. Is there another way to use subprocess to fully run the script in background?

                  推荐答案

                  & 是一个 shell 功能.如果您希望它与 subprocess 一起使用,则必须指定 shell=True,例如:

                  & is a shell feature. If you want it to work with subprocess, you must specify shell=True like:

                  subprocess.call(command, shell=True)
                  

                  这将允许您在后台运行命令.

                  This will allow you to run command in background.

                  注意事项:

                  1. 由于shell=True,以上使用的是command,而不是command_list.

                  1. Since shell=True, the above uses command, not command_list.

                  使用 shell=True 可启用 shell 的所有功能.除非包括 thingy 在内的 command 来自您信任的来源,否则请勿这样做.

                  Using shell=True enables all of the shell's features. Don't do this unless command including thingy comes from sources that you trust.

                  更安全的选择

                  此替代方法仍可让您在后台运行命令,但很安全,因为它使用默认的 shell=False:

                  p = subprocess.Popen(command_list)
                  

                  执行此语句后,该命令将在后台运行.如果您想确保它已完成,请运行 p.wait().

                  After this statement is executed, the command will run in background. If you want to be sure that it has completed, run p.wait().

                  这篇关于在后台执行子进程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何在 Python 中生成一个新的独立进程 下一篇:使用 Python 运行可执行文件并填写用户输入

                  相关文章

                    <small id='1yygW'></small><noframes id='1yygW'>

                  1. <i id='1yygW'><tr id='1yygW'><dt id='1yygW'><q id='1yygW'><span id='1yygW'><b id='1yygW'><form id='1yygW'><ins id='1yygW'></ins><ul id='1yygW'></ul><sub id='1yygW'></sub></form><legend id='1yygW'></legend><bdo id='1yygW'><pre id='1yygW'><center id='1yygW'></center></pre></bdo></b><th id='1yygW'></th></span></q></dt></tr></i><div id='1yygW'><tfoot id='1yygW'></tfoot><dl id='1yygW'><fieldset id='1yygW'></fieldset></dl></div>

                    1. <tfoot id='1yygW'></tfoot>

                        <bdo id='1yygW'></bdo><ul id='1yygW'></ul>
                    2. <legend id='1yygW'><style id='1yygW'><dir id='1yygW'><q id='1yygW'></q></dir></style></legend>