首页 » PHP教程 » phppopen获取pid技巧_python内置模块subprocess 模块创建和治理子进程

phppopen获取pid技巧_python内置模块subprocess 模块创建和治理子进程

访客 2024-11-13 0

扫一扫用手机浏览

文章目录 [+]

subprocess 是 Python 标准库中的一个模块,用于创建和管理子进程。
它供应了一种在 Python 程序中启动新进程、连接到它们的输入/输出/缺点管道以及获取它们的返回值的方法。

利用 subprocess 模块,你可以在 Python 程序中实行外部命令、调用其他可实行文件,并与它们进行交互。
这使得你可以利用 Python 的强大功能来自动化和掌握其他程序的实行。

phppopen获取pid技巧_python内置模块subprocess 模块创建和治理子进程

二、subprocess.Popen 函数,启动一个新的子进程并与其进行交互

phppopen获取pid技巧_python内置模块subprocess 模块创建和治理子进程
(图片来自网络侵删)
popen = subprocess.Popen(args,...,process_group=None):创建popen工具args:要实行的命令,可以是一个字符串或一个字符串列表。
如果是字符串列表,则每个元素都将作为一个单独的参数通报给命令。
bufsize:用于指定缓冲区的大小。
默认值为 -1,表示利用系统默认的缓冲区大小。
executable:用于指定要实行的可实行文件的路径。
默认为 None,表示利用系统默认的可实行文件查找规则。
stdin、stdout、stderr:这些参数用于指定子进程的标准输入、标准输出和标准缺点的管道。
它们可以是文件工具、文件描述符或 subprocess.PIPE(用于创建一个新的管道)。
preexec_fn:一个可调用工具,在子进程实行前被调用。
它可以用于设置子进程的环境、文件描述符等。
close_fds:一个布尔值,用于指定是否在子进程中关闭不须要的文件描述符。
默认为 True,表示关闭不须要的文件描述符。
shell:一个布尔值,用于指定是否通过系统的 shell 来实行命令。
默认为 False,表示直接实行命令而不该用 shell。
cwd:用于指定子进程确当前事情目录。
env:一个字典,用于指定子进程的环境变量。
默认为 None,表示继续当提高程的环境变量。
universal_newlines:一个布尔值,用于指定是否将输入/输出数据作为文本处理,并利用通用换行符模式。
默认为 None,表示根据系统平台自动选择是否以文本模式处理。
startupinfo:一个 subprocess.STARTUPINFO 工具,用于指定子进程的启动信息。
creationflags:一个整数,用于指定创建子进程的标志。
默认为 0,表示利用默认标志。
restore_signals:一个布尔值,用于指定是否在子进程中规复旗子暗记处理程序。
默认为 True,表示规复旗子暗记处理程序。
start_new_session:一个布尔值,用于指定是否在子进程中启动新的会话。
默认为 False,表示不启动新的会话。
pass_fds:一个整数列表,用于指定在子进程中保持打开状态的文件描述符。
encoding、errors、text:这些参数用于指定文本数据的编码和缺点处理办法。
它们在 Python 3 中引入,用于替代 universal_newlines 参数。
umask:一个整数,用于指定子进程的文件模式创建掩码。
默认为 -1,表示利用当提高程的掩码。
pipesize:一个整数,用于指定管道的大小。
默认为 -1,表示利用系统默认的管道大小。
process_group:一个整数,用于指定子进程的进程组 ID。
popen.poll():用于检讨子进程(命令)是否已经实行结束,没结束返回None,结束后返回状态码。
popen.wait(timeout=None):等待子进程结束,并返回状态码;如果在timeout指定的秒数之后进程还没有结束,将会抛出一个TimeoutExpired非常。
popen.communicate(input=None, timeout=None):该方法可用来与进程进行交互,比如发送数据到stdin,从stdout和stderr读取数据,直达到到文件末端。
popen.send_signal(signal):发送指定的旗子暗记给这个子进程。
popen.terminate():停滞该子进程。
popen.kill():杀去世该子进程。
popen.stdin:如果在创建Popen工具时参数stdin被设置为PIPE,Popen.stdin将返回一个文件工具用于策子进程发送指令。
否则返回None。
popen.stdout:如果在创建Popen工具时参数stdout被设置为PIPE,Popen.stdout将返回一个文件工具用于策子进程发送指令。
否则返回None。
popen.stderr:如果在创建Popen工具时参数stdout被设置为PIPE,Popen.stdout将返回一个文件工具用于策子进程发送指令。
否则返回None。
popen.pid:获取子进程的进程ID。
popen.returncode:获取进程的返回值。
如果进程还没有结束,返回None。
popen.args:获取通报给 Popen 的命令参数。
popen.universal_newlines:布尔值,表示是否以文本模式处理输入/输出数据,并利用通用换行符模式。
如果在创建 Popen 工具时指定了 universal_newlines=True,则 popen.universal_newlines 将为 True。

三、subprocess模块中的常用函数,都是基于subprocess.Popen实现

subprocess.run(popenargs, input=None, capture_output=False, timeout=None, check=False, kwargs):实行指定的命令,等待命令完成,并返回一个 CompletedProcess 工具,个中包含有关命令实行的信息,如返回码、标准输出和标准缺点输出。
popenargs:要实行的命令及其参数,可以是一个字符串或一个字符串列表。
input:用于向子进程发送的输入。
它可以是一个字节字符串。
capture_output:一个布尔值,用于指定是否捕获子进程的标准输出和标准缺点输出。
timeout:一个可选的超时时间,用于指按期待命令完成的最永劫光。
check:一个布尔值,用于指定是否检讨命令的返回码,并在返回码非零时引发非常。
kwargs:其他关键字参数,用于通报给 subprocess.Popen 布局函数。
subprocess.call(popenargs, timeout=None, kwargs):实行指定的命令,等待命令完成,并返回命令的返回码。
popenargs:要实行的命令及其参数,可以是一个字符串或一个字符串列表。
timeout:一个可选的超时时间,用于指按期待命令完成的最永劫光。
kwargs:其他关键字参数,用于通报给 subprocess.Popen 布局函数。
subprocess.check_call(popenargs, kwargs):实行指定的命令,等待命令完成。
如果命令的返回码非零,则引发 CalledProcessError 非常。
popenargs:要实行的命令及其参数,可以是一个字符串或一个字符串列表。
kwargs:其他关键字参数,用于通报给 subprocess.Popen 布局函数。
subprocess.check_output(popenargs, timeout=None, kwargs):实行指定的命令,等待命令完成,并返回命令的输出结果。
popenargs:要实行的命令及其参数,可以是一个字符串或一个字符串列表。
timeout:一个可选的超时时间,用于指按期待命令完成的最永劫光。
kwargs:其他关键字参数,用于通报给 subprocess.Popen 布局函数。
subprocess.getoutput(cmd, , encoding=None, errors=None):实行指定的命令,并返回命令的输出结果作为一个字符串。
cmd:要实行的命令。
encoding:用于解码命令输出的字符编码。
errors:用于指定解码命令输出时的缺点处理办法。
subprocess.getoutput() 函数subprocess.getstatusoutput(cmd, , encoding=None, errors=None):实行指定的命令,并返回一个元组,包含命令的返回码和输出结果。
cmd:要实行的命令。
encoding:用于解码命令输出的字符编码。
errors:用于指定解码命令输出时的缺点处理办法。
subprocess.list2cmdline(seq):将字符串序列转换为一个单独的字符串,用于表示命令行参数。
它利用与操作系统干系的规则来转义和引用参数。
seq:一个字符串序列。

四、办理输入输出报编码缺点的bug

import subprocessfrom functools import partialsubprocess.Popen = partial(subprocess.Popen,encoding='utf-8')

标签:

相关文章

Java代码虚拟化保护技术与应用前景

软件应用的需求日益增长,软件开发过程中对代码的保护成为了一个重要议题。Java作为一种广泛应用于企业级应用的编程语言,其代码虚拟化...

PHP教程 2025-03-02 阅读1 评论0

CAD插件错误代码与应对步骤

CAD(计算机辅助设计)软件在工程设计领域得到了广泛应用。CAD插件作为提升设计效率的重要工具,在提高设计师工作效率的也带来了一定...

PHP教程 2025-03-02 阅读1 评论0

上古卷轴代码规则大全游戏背后的编程奥秘

《上古卷轴》作为一款深受玩家喜爱的角色扮演游戏,自问世以来便以其丰富的世界观、独特的游戏体验和深厚的文化底蕴吸引了无数玩家。在这款...

PHP教程 2025-03-02 阅读1 评论0