首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在设置了stdout的Windows上等待孙子进程的Python子进程

,可以使用subprocess模块来实现。

subprocess模块是Python中用于创建和管理子进程的标准库。它提供了一个Popen类,可以用于创建子进程并与其进行交互。

在Windows上,如果子进程的输出被重定向到stdout,那么默认情况下,子进程的输出将无法被捕获。为了解决这个问题,可以使用subprocess.CREATE_NEW_PROCESS_GROUP标志来创建一个新的进程组,并将其传递给Popencreationflags参数。

下面是一个示例代码,演示了如何在设置了stdout的Windows上等待孙子进程的Python子进程:

代码语言:txt
复制
import subprocess

def run_command(command):
    process = subprocess.Popen(command, stdout=subprocess.PIPE, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
    output, _ = process.communicate()
    return output.decode('utf-8')

# 示例命令
command = ['python', 'grandchild.py']

output = run_command(command)
print(output)

在上面的示例中,run_command函数接受一个命令列表作为参数,并使用subprocess.Popen创建子进程。stdout=subprocess.PIPE参数将子进程的输出重定向到管道,而creationflags=subprocess.CREATE_NEW_PROCESS_GROUP参数创建一个新的进程组。

然后,使用communicate方法等待子进程执行完毕,并获取其输出。最后,将输出解码为字符串并打印出来。

需要注意的是,上述示例中的grandchild.py是一个孙子进程的示例脚本,你可以根据自己的需求替换为实际的子进程命令。

这是一个解决在设置了stdout的Windows上等待孙子进程的Python子进程的方法。希望对你有帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在 Python 中终止 Windows 运行进程

当深入研究Windows操作系统Python开发领域时,无疑会出现需要终止正在运行进程情况。这种终止背后动机可能涵盖多种情况,包括无响应、过度资源消耗或仅仅是停止脚本执行必要性。...在这篇综合性文章中,我们将探讨各种方法来完成使用 Python 终止 Windows 运行进程任务。...方法3:释放“流程”模块力量 Python 进程”模块赋予我们生成新进程能力,与它们输入/输出/错误管道建立连接,并检索它们返回代码。...shell=True' 参数 Windows 命令外壳中执行命令时变得不可或缺。 结论 在这次深入探索中,我们阐明了使用 Python 终止 Windows 运行进程三种不同方法。...“psutil”库作为一个强大工具出现,为我们提供一个全面的、跨平台系统信息检索和过程操作解决方案。此外,“流程”模块解锁维度,使我们能够毫不费力地生成进程和执行命令。

39230

python threading中如何处理主进程线程关系

之前用python多线程,总是处理不好进程和线程之间关系。后来发现join和setDaemon函数,才终于弄明白。下面总结一下。...1.使用join函数后,主进程会在调用join地方等待线程结束,然后才接着往下执行。...如果使用setDaemon函数,则与join相反,主进程结束时候不会等待线程。...这里设置进程为守护进程,当主进程结束时候,线程被中止 运行结果如下: #python testsetDaemon.py This is the end of main thread. 3...秒 2019-10-06 14:17:25,671 【 7412 】 MainProcess 进程花费时间:2.9418249130249023秒 以上这篇python threading中如何处理主进程线程关系就是小编分享给大家全部内容

2.7K10

Python全栈开发之常用模块

(callable object),它将在进 程运行之前被调用 close_sfs:windows平台下,如果close_fds被设置为True,则新创建进程将不会继承父进程输入、输出、错误管道...close_sfs:windows平台下,如果close_fds被设置为True,则新创建进程将不会继承父进程输入、输出、错误管道。...close_sfs:windows平台下,如果close_fds被设置为True,则新创建进程将不会继承父进程输入、输出、错误管道,所以不能将close_fds设置为True同时重定向进程标准输入...shell:同上 cwd:用于设置进程的当前目录 env:用于指定子进程环境变量。如果env = None,进程环境变量将从父进程中继承。...()函数,用于设置进程一些属性,如:主窗口外观,进程优先级等等 import subprocess """ 终端输入命令分为两种: 输入即可得到输出,如:ifconfig 输入进行某环境,依赖再输入

95510

python 守护进程(daemon)

3、进程再次fork一个进程,这个进程可以称为孙子进程,然后进程退出。 4、重定向孙子进程标准输入流,标准输出流,标准错误到/dev/null #!.../usr/bin/env python # -*- coding:utf-8 -*- import sys, os '''将当前进程fork为一个守护进程    注意:如果你守护进程是由inetd启动...,在这个shell环境下一开始执行程序都是shell进程进程,自然会受到shell进程影响,程序里fork进程后,父进程退出,对于shell进程来说,这个父进程就算执行完毕,而产生进程会被...2.修改进程工作目录 进程创建时候会继承父进程工作目录,如果执行程序是U盘里面,就会导致U盘不能卸载。...,fork孙子进程处理, 6.重定向孙子进程标准输入流,标准输出流,标准错误流到/dev/null 因为是守护进程,本身已经脱离了终端,那么标准输入流,标准输入流,标准错误流就没有什么意义,所以都转向到

1K30

Python用subprocessPopen来调用系统命令

windows操作系统,Popen通过调用 CreateProcess()来创建进程,CreateProcess接收一个字符串參数,假设args是序列类型,系统将会通过 list2cmdline(...參数Close_sfs:windows平台下,假设close_fds被设置为True,则新创建进程将不会继承父进程输入、输出、错误管 道。...设置并返回returncode属性。 Popen.wait() 等待进程结束。设置并返回returncode属性。 Popen.communicate(input=None) 与进程进行交互。...该函数将一直等待进程执行结束,并返回进程returncode。文章一開始样例就演示call函数。假设进程不须要进行交 互,就能够使用该函数来创建。...异常对象中,包 括进程returncode信息。 subprocess模块内容就这么多。Python手冊中,还介绍怎样使用 subprocess来替换一些老模块,老函数样例。

1.7K20

Python】扫盲帖:关于Windows、Linux和Mac安装设置Python问题

来源|Analytics Vidhya 概述 Linux、Mac或Windows机器安装Python时遇到问题 一步一步安装Python及流行数据科学工具 1 介绍 在你机器安装Python...我提供一个循序渐进过程,你可以通过以下三个平台上设置Anaconda来安装Python: Linux macOS Windows 2 目录 数据科学重要工具 Linux安装Python步骤...macOS安装Python步骤 Windows安装Python步骤 3 数据科学重要工具 数据科学家工具箱可能会让你大吃一惊,因为工作不同方面可能需要多个工具。...让我们来看看如何在我们自己机器同时设置Anaconda和Miniconda! 5 Linux安装Python步骤 Linux是数据科学界广泛喜爱平台。...观看视频^2,获得macOS安装Python完整运行过程: 7 Windows安装Python步骤 让我们看看在Windows安装Python和其他数据科学库步骤。

3.1K30

使用python执行shell脚本 并动态传参 及subprocess使用详解

最近工作需求中 有遇到这个情况 web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择subprocess这个python标准库 subprocess...一个字符串将被视为一个字符串作为唯一项目(要执行程序)序列。 UNIX,使用shell = True:如果args是一个字符串,则它指定要通过shell执行命令字符串。...Popen对象中,可以设值subprocess.stdout=PIPE 即通过管道 p.stdout.read()取出 该进程标准输出 preexec_fn 如果将preexec_fn设置为可调用对象...(仅限Windows) Popen对象一些方法 Popen.poll() 检查进程是否终止,返回对象returncode Popen.wait() 等待进程完成,阻塞。...Popen.kill() 杀死进程 以上这篇使用python执行shell脚本 并动态传参 及subprocess使用详解就是小编分享给大家全部内容,希望能给大家一个参考。

5.3K30

python 标准类库-并行执行之subprocess-进程管理

类似Unix使用os.execvp(),Windows使用CreateProcess()函数。 args 参数值为字符串、序列。默认,如果args是个序列,程序会执行args中第一项。...此外,stderr还可以是STDOUT,表明子进程错误数据应该被放进相同文件句柄stdout preexec_fn 如果preexec_fn 被设置为可调用对象,该对象将在进程执行之前被执行(...等待进程终止,设置并返回returncode。...等待进程终止。 input:可选参数,参数值为发送给进程数据,如果不需要发送数据,则为None。...注意:如果设置shell=True,则该属性值为衍生shell进程id Popen.returncode 进程返回代码,如果值为None表明进程还没终止。

3.9K20

Python Subprocess库详解

简介 Subprocess库是Python中用于创建和管理进程标准库。它提供一个强大而灵活接口,使得你可以Python中启动新进程、连接它们输入和输出,并与它们进行交互。...超时处理 实际应用中,我们可能希望设置进程最长运行时间,以避免因子进程无法正常退出而导致父进程一直等待。...跨平台兼容性 Subprocess库不同操作系统上表现一致,这使得你代码更具可移植性。无论是Windows、Linux还是macOS,Subprocess库都提供一致接口。...通过使用shell=True参数,确保Windows可以执行带有空格命令。...使用subprocess.Popenrestore_signals参数还原信号处理 Unix系统,subprocess.Popenrestore_signals参数允许你进程启动时还原信号处理为默认值

1.4K21

Python 执行系统命令

system函数可以将字符串转化成命令服务器运行;其原理是每一条system函数执行时,其会创建一个进程系统执行命令行,进程执行结果无法影响主进程。...Popen方法: 1、Popen.poll():用于检查进程是否已经结束。设置并返回returncode属性。 2、Popen.wait():等待进程结束。设置并返回returncode属性。...注意:如果希望通过进程stdin向其发送数据,创建Popen对象时候,参数stdin必须被设置为PIPE。...5、Popen.terminate():停止(stop)进程windows平台下,该方法将调用Windows API TerminateProcess()来结束进程。...该函数将一直等待进程运行结束,并返回进程returncode。文章一开始例子就演示call函数。如果子进程不需要进行交互,就可以使用该函数来创建。

1.6K10

python中执行DOS命令3种方法小

参数Close_sfs:windows平台下,如果close_fds被设置为True,则新创建进程将不会继承父进程输入、输出、错误管 道。...如果将此参数设置为True,Python统一把这些换行符当作’/n’来处理。...参数startupinfo与createionflags只windows下用效,它们将被传递给底层CreateProcess()函数,用 于设置进程一些属性,如:主窗口外观,进程优先级等等。...设置并返回returncode属性。 Popen.wait()  等待进程结束。设置并返回returncode属性。 Popen.communicate(input=None) 与进程进行交互。...Popen.terminate() 停止(stop)进程windows平台下,该方法将调用Windows API TerminateProcess()来结束进程

2K20

python笔记65 - Python3 subprocess执行命令行获取返回结果

前言 subprocess 模块允许我们启动一个新进程,并连接到它们输入/输出/错误管道,从而获取返回值。 Popen 是 subprocess核心,进程创建和管理都靠它处理。...stdin, stdout, stderr: 分别表示程序标准输入、输出、错误句柄 preexec_fn: 只 Unix 平台下有效,用于指定一个可执行对象(callable object),它将在进程运行之前被调用...cwd: 用于设置进程的当前目录。 env: 用于指定子进程环境变量。 如果 env = None,进程环境变量将从父进程中继承。...系统编码是gb2312 windows解码 知道windows系统编码后,设置对应编码,就可以正常解码 import subprocess p = subprocess.Popen('java',...wait(timeout): 等待进程终止。 communicate(input,timeout): 和进程交互,发送和读取数据。

8.5K20

pythonsubprocess

程序通常执行序列或字符串第一项,但可以通过使用明确参数进行设置UNIX,shell = False(默认):在这种情况下,Popen类使用os.execvp()来执行程序进程。...字符串将被视为只有一个字符串序列(程序执行)。 UNIX,shell= True:如果参数是一个字符串,它指定通过shell执行命令字符串。...如果preexec_fn设置为一个可调用对象,该对象将在进程执行之前调用。 如果close_fds 为True,所有的文件描述符除了0、1和2都会在进程执行之前关闭。...如果给定startupinfo and creationflags参数, 将会转交给底层CreateProcess() 函数,他们可以指定诸如主窗体外观、新进程优先级之类属性(仅支持windows...Popen 对象 ============= Popen类实例有以下方法 poll()     检查进程是否终止,返回returncode属性 wait()     等待进程终止。

1.6K30

守护进程

--创建进程,父进程退出。 这一步作用有两个: 1.非系统守护进程可能是由用户手动执行,比如在终端shell执行./nginx。父进程终止会让shell认为这条命令已经执行完毕。...--设置文件屏蔽字。 这一步作用有三个: 1.修改从父进程继承来文件屏蔽字,避免父进程原先设置文件屏蔽字对守护进程来说不合理。...进程先于父进程退出:进程结束调用exit清理资源后,此时它并没有结束,而是进入僵尸状态,等待进程调用wait4来清理它task_struct。...只有父进程可以回收进程资源,所以父进程不死,没有其它进程能解决这个僵尸进程;父进程死了,则可以由init来接管,僵尸进程就不存在。僵尸进程是服务器大忌,大量僵尸进程会导致服务器宕机。...而如果父进程先fork进程进程再立刻fork孙子进程,这样孙子进程成为守护进程,立刻被init接管,无论父进程怎么阻塞,都与守护进程无关了。

2.7K40

python—subprocess、gl

一、subprocess模块 1.subprocess以及常用封装函数 运行python时候,我们都是创建并运行一个进程。...像Linux进程那样,一个进程可以fork一个进程,并让这个子进程exec另外一个程序。Python中,我们通过标准库中subprocess包来fork一个进程,并运行一个外部程序。...我们必须调用对象wait()方法,父进程才会等待 (也就是阻塞block) 例1(父进程等待进程): #!...child.stdout child.stderr 可以Popen()建立进程时候改变标准输入、标准输出和标准错误,并可以利用subprocess.PIPE将多个子进程输入和输出连接在一起,构成管道...(pipe);如没有写stdin和stdout,默认将进程执行结果打印至屏幕,而不是保存于内存中 例1: #!

1.5K20

python之调用系统命令 原

参数Close_sfs:windows平台下,如果close_fds被设置为True,则新创建进程将不会继承父进程输入、输出、错误管 道。...我们不能将close_fds设置为True同时重定向进程标准输入、输出与错误(stdin, stdout, stderr)。...参数startupinfo与createionflags只windows下用效,它们将被传递给底层CreateProcess()函数,用 于设置进程一些属性,如:主窗口外观,进程优先级等等。...Popen方法: Popen.poll() 用于检查进程是否已经结束。设置并返回returncode属性。 Popen.wait() 等待进程结束。...windows平台下,该方法将调用Windows API TerminateProcess()来结束进程。 Popen.kill() 杀死进程

2.2K40
领券