python子进程_17.1. subprocess — 子进程管理 — Python 2.7.18 文档

Execute a child program in a new process. On Unix, the class uses

os.execvp()-like behavior to execute the child program. On Windows,

the class uses the Windows CreateProcess() function. The arguments to

Popen are as follows.

args 应当是一个程序的参数列表或者一个简单的字符串。默认情况下,如果 args 是一个序列,将运行的程序是此序列的第一项。如果 args 是一个字符串,解释是平台相关的,如下所述。有关默认行为的其他差异,见 shell 和 executable 参数。除非另有说明,推荐将 args 作为序列传递。

On Unix, if args is a string, the string is interpreted as the name or

path of the program to execute. However, this can only be done if not

passing arguments to the program.

注解

shlex.split() can be useful when determining the correct

tokenization for args, especially in complex cases:

>>>import shlex, subprocess

>>>command_line = raw_input()

/bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"

>>>args = shlex.split(command_line)

>>>print args

['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]

>>>p = subprocess.Popen(args) # Success!

特别注意,由 shell 中的空格分隔的选项(例如 -input)和参数(例如 eggs.txt )位于分开的列表元素中,而在需要时使用引号或反斜杠转义的参数在 shell (例如包含空格的文件名或上面显示的 echo 命令)是单独的列表元素。

在 Windows,如果 args 是一个序列,他将通过一个在 Converting an argument sequence to a string on Windows 描述的方式被转换为一个字符串。这是因为底层的 CreateProcess() 只处理字符串。

参数 shell (默认为 False)指定是否使用 shell 执行程序。如果 shell 为 True,更推荐将 args 作为字符串传递而非序列。

On Unix with shell=True, the shell defaults to /bin/sh. If

args is a string, the string specifies the command

to execute through the shell. This means that the string must be

formatted exactly as it would be when typed at the shell prompt. This

includes, for example, quoting or backslash escaping filenames with spaces in

them. If args is a sequence, the first item specifies the command string, and

any additional items will be treated as additional arguments to the shell

itself. That is to say, Popen does the equivalent of:

Popen(['/bin/sh', '-c', args[0], args[1], ...])

在 Windows,使用 shell=True,环境变量 COMSPEC 指定了默认 shell。在 Windows 你唯一需要指定 shell=True 的情况是你想要执行内置在 shell 中的命令(例如 dir 或者 copy)。在运行一个批处理文件或者基于控制台的可执行文件时,不需要 shell=True。

警告

Passing shell=True can be a security hazard if combined with

untrusted input. See the warning under 常用参数

for details.

bufsize, if given, has the same meaning as the corresponding argument to the

built-in open() function: 0 means unbuffered, 1 means line

buffered, any other positive value means use a buffer of (approximately) that

size. A negative bufsize means to use the system default, which usually means

fully buffered. The default value for bufsize is 0 (unbuffered).

注解

If you experience performance issues, it is recommended that you try to

enable buffering by setting bufsize to either -1 or a large enough

positive value (such as 4096).

The executable argument specifies a replacement program to execute. It

is very seldom needed. When shell=False, executable replaces the

program to execute specified by args. However, the original args is

still passed to the program. Most programs treat the program specified

by args as the command name, which can then be different from the program

actually executed. On Unix, the args name

becomes the display name for the executable in utilities such as

ps. If shell=True, on Unix the executable argument

specifies a replacement shell for the default /bin/sh.

stdin, stdout and stderr specify the executed program’s standard input,

standard output and standard error file handles, respectively. Valid values

are PIPE, an existing file descriptor (a positive integer), an

existing file object, and None. PIPE indicates that a new pipe

to the child should be created. With the default settings of None, no

redirection will occur; the child’s file handles will be inherited from the

parent. Additionally, stderr can be STDOUT, which indicates that

the stderr data from the child process should be captured into the same file

handle as for stdout.

If preexec_fn is set to a callable object, this object will be called in the

child process just before the child is executed. (Unix only)

If close_fds is true, all file descriptors except 0, 1 and

2 will be closed before the child process is executed. (Unix only).

Or, on Windows, if close_fds is true then no handles will be inherited by the

child process. Note that on Windows, you cannot set close_fds to true and

also redirect the standard handles by setting stdin, stdout or stderr.

If cwd is not None, the child’s current directory will be changed to cwd

before it is executed. Note that this directory is not considered when

searching the executable, so you can’t specify the program’s path relative to

cwd.

If env is not None, it must be a mapping that defines the environment

variables for the new process; these are used instead of inheriting the current

process’ environment, which is the default behavior.

注解

如果指定, env 必须提供所有被子进程需求的变量。在 Windows,为了运行一个 side-by-side assembly ,指定的 env 必须 包含一个有效的 SystemRoot。

If universal_newlines is True, the file objects stdout and stderr

are opened as text files in universal newlines mode. Lines may be

terminated by any of '\n', the Unix end-of-line convention, '\r',

the old Macintosh convention or '\r\n', the Windows convention. All of

these external representations are seen as '\n' by the Python program.

注解

This feature is only available if Python is built with universal newline

support (the default). Also, the newlines attribute of the file objects

stdout, stdin and stderr are not updated by the

communicate() method.

If given, startupinfo will be a STARTUPINFO object, which is

passed to the underlying CreateProcess function.

creationflags, if given, can be CREATE_NEW_CONSOLE or

CREATE_NEW_PROCESS_GROUP. (Windows only)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值