Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在后台运行(cmd-)命令?python_Python_Sockets_Cmd_Background - Fatal编程技术网

如何在后台运行(cmd-)命令?python

如何在后台运行(cmd-)命令?python,python,sockets,cmd,background,Python,Sockets,Cmd,Background,我制作了一个远程控制客户端,它可以从服务器接收命令。接收到的命令将作为shell中的普通cmd命令执行。但是如何在后台执行这些命令,以便用户不会看到任何输入或输出 例如,当我执行此操作时,用户将看到正在发生的任何事情: import os os.system(command_from_server) 您可以使用子流程Popen启动cmd,而无需等待结束: from subprocess import Popen pid = Popen(["ls", "-l&quo

我制作了一个远程控制客户端,它可以从服务器接收命令。接收到的命令将作为shell中的普通cmd命令执行。但是如何在后台执行这些命令,以便用户不会看到任何输入或输出


例如,当我执行此操作时,用户将看到正在发生的任何事情:

import os
os.system(command_from_server)

您可以使用子流程Popen启动cmd,而无需等待结束:

from subprocess import Popen
pid = Popen(["ls", "-l"]).pid

Popen有很多用于处理stdout和stderr的配置选项。请参阅ufficial doc。

您可以使用子流程Popen启动cmd,而无需等待结束:

from subprocess import Popen
pid = Popen(["ls", "-l"]).pid

Popen有很多用于处理stdout和stderr的配置选项。请参阅ufficial doc。

要在后台执行命令,必须使用子流程模块。
例如:

import subprocess
subprocess.Popen("command", shell=True)
import os
os.chdir(path)
如果要使用多个参数执行命令,例如:ls-a,则代码有点不同:

import subprocess
subprocess.Popen(["ls", "-a"], shell=True)
但要更改目录,必须使用操作系统模块。
例如:

import subprocess
subprocess.Popen("command", shell=True)
import os
os.chdir(path)

要在后台执行命令,必须使用子流程模块。
例如:

import subprocess
subprocess.Popen("command", shell=True)
import os
os.chdir(path)
如果要使用多个参数执行命令,例如:ls-a,则代码有点不同:

import subprocess
subprocess.Popen(["ls", "-a"], shell=True)
但要更改目录,必须使用操作系统模块。
例如:

import subprocess
subprocess.Popen("command", shell=True)
import os
os.chdir(path)

我还不知道子流程Popen,但我会试试。谢谢,我还不知道子流程,但我会试试。感谢那不是真的
subprocess
接受关键字参数
cwd=
,您可以在其中指定在哪个目录中运行子流程。此外,在第二个示例中,
shell=True
是错误的;您可以将
ls-l
作为单个字符串传递,或者(更好。在这里)删除
shell=True
subprocess
接受关键字参数
cwd=
,您可以在其中指定在哪个目录中运行子流程。此外,在第二个示例中,
shell=True
是错误的;您可以将
ls-l
作为单个字符串传递,或者(更好的方法是在这里)删除
shell=True