Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:如何启动完整进程而不是子进程并检索PID

Python:如何启动完整进程而不是子进程并检索PID
EN

Stack Overflow用户
提问于 2013-02-10 03:28:50
回答 3查看 14.1K关注 0票数 17

我想:

  1. 从我的进程(myexe.exe arg1)启动一个新进程(myexe.exe arg0)
  2. 检索此新进程的PID (os windows)
  3. 当我用myexe.exe Windows命令“结束进程树”杀死我的第一个实体( arg0)时,我需要新的实体(myexe.exe arg1)不会被杀死.

我和subprocess.Popen,os.exec,os.spawn,os.system.但没有成功。

另一种解释问题的方法:如果有人杀死了myexe.exe (Arg0)的“进程树”,如何保护myexe.exe (arg0)?

编辑:相同的问题(没有答案) 这里

编辑:下面的命令不能保证子进程的独立性

代码语言:javascript
运行
AI代码解释
复制
subprocess.Popen(["myexe.exe",arg[1]],creationflags = DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP,close_fds = True)
EN

回答 3

Stack Overflow用户

发布于 2013-02-10 03:53:35

若要启动可在父进程退出Windows上之后继续运行的子进程,请执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
from subprocess import Popen, PIPE

CREATE_NEW_PROCESS_GROUP = 0x00000200
DETACHED_PROCESS = 0x00000008

p = Popen(["myexe.exe", "arg1"], stdin=PIPE, stdout=PIPE, stderr=PIPE,
          creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP)
print(p.pid)

Windows进程创建标志是这里

这里有一个更便携的版本

票数 13
EN

Stack Overflow用户

发布于 2013-02-10 03:36:36

几年前,我在windows上做了类似的事情,我的问题是想要扼杀孩子的进程。

我假设您可以使用pid = Popen(["/bin/mycmd", "myarg"]).pid运行子进程,所以我不知道真正的问题是什么,所以我猜是在您终止主进程的时候。

这和国旗有关。

我无法证明这一点,因为我没有运行Windows。

代码语言:javascript
运行
AI代码解释
复制
subprocess.CREATE_NEW_CONSOLE
The new process has a new console, instead of inheriting its parent’s console (the default).

This flag is always set when Popen is created with shell=True.

subprocess.CREATE_NEW_PROCESS_GROUP
A Popen creationflags parameter to specify that a new process group will be created. This flag is necessary for using os.kill() on the subprocess.

This flag is ignored if CREATE_NEW_CONSOLE is specified.
票数 1
EN

Stack Overflow用户

发布于 2015-02-18 11:01:32

所以如果我明白你的意思,代码应该是这样的:

代码语言:javascript
运行
AI代码解释
复制
from subprocess import Popen, PIPE
script = "C:\myexe.exe"
param = "-help"
DETACHED_PROCESS = 0x00000008
CREATE_NEW_PROCESS_GROUP = 0x00000200
pid = Popen([script, param], shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE,
            creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP)

至少我试过这个并且为我工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14797236

复制
相关文章
Python获取pid和进程名字
     如果pip不识别,就进入下载的python目录下面执行:。。。Python36\Scripts
py3study
2020/01/10
3K0
如何在 Python 中启动后台进程?
后台进程是在后台运行的程序或任务,它们不会阻塞主程序的执行,并可以在后台处理一些耗时或周期性的任务。在本文中,我们将探讨如何在Python中启动后台进程,并介绍一些内置模块和第三方库来实现这一目标。
网络技术联盟站
2023/08/03
1.9K0
如何在 Python 中启动后台进程?
python multiprocess 子进程和主进程同时抛出异常时子进程无法退出
在使用python的multiprocess库时,如果在主进程中的处理子进程的返回函数callback或者处理子进程的错误的函数errorbackerror中抛出异常,则子进程无法退出。 (1)errorcallback中抛出异常
锦小年
2021/12/08
3.2K0
python multiprocess 子进程和主进程同时抛出异常时子进程无法退出
如何在 Python 中启动后台进程?
后台进程是在后台运行的程序或任务,它们不会阻塞主程序的执行,并可以在后台处理一些耗时或周期性的任务。在本文中,我们将探讨如何在Python中启动后台进程,并介绍一些内置模块和第三方库来实现这一目标。
网络技术联盟站
2023/07/14
4930
如何在 Python 中启动后台进程?
windows-根据进程PID 获取进程路径
通过GetModuleFileNameEx来获取. 他是在Psapi头文件中.但是还需要加载lib.
IBinary
2019/12/26
3.9K0
linux杀掉mysql进程_linux杀死pid进程
使用“ps -e|grep mysql”命令,查看mysql程序的对应的pid号。
全栈程序员站长
2022/09/28
14.1K0
父进程退出时如何确保子进程退出?
子进程退出的时候,父进程能够收到子进程退出的信号,便于管理,但是有时候又需要在父进程退出的时候,子进程也退出,该怎么办呢?
编程珠玑
2019/09/02
12.6K0
进程pid判断脚本
在每台服务器/etc/zabbix/zabbix_agentd.conf设置路径:此例只需要piddiff.sh
章工运维
2023/05/19
4620
Python 技术篇-通过进程名获取进程pid实例演示,使用psutil库获取进程id
psutil.process_iter() 方法可以返回进程列表信息,再通过匹配名称,获取进程的 pid 即可。
小蓝枣
2021/12/01
5.3K0
Python 技术篇-通过进程名获取进程pid实例演示,使用psutil库获取进程id
Nodejs子进程
进程是CPU分配资源的最小单位,分配独立内存,进程之间可通信,但是必须通过内核,使用IPC接口来做,代价比较大 线程是CPU调度的最小单位
epoos
2022/06/06
1.4K0
Nodejs子进程
subprocess:Python中创建子进程
subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回传数据。
luckpunk
2023/09/29
6310
subprocess:Python中创建子进程
Linux如何查看进程、杀死进程、启动进程等常用命令
使用kill命令结束进程:kill xxx 常用:kill -9 324 Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME
一觉睡到小时候
2019/09/26
7.8K0
内核中通过进程PID获取进程的全部路径
我们遇到的Dos路径.如果想转化为NT路径(也就是 C:\xxxx)类似的格式 需要自己实现. 具体原理如下:
IBinary
2019/09/29
4K0
内核中通过进程PID获取进程的全部路径
父进程和子进程谁先运行?
Linux中,父进程和子进程是并行运行的,先运行哪个是不确定的,在小红帽系统(Red Hat)中,先运行的是子进程,在ubuntu系统中,父进程是先运行的。
Jasonangel
2021/05/28
4K0
linux:根据主进程查找子进程
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
10km
2019/09/18
5K0
【Android 进程保活】oom_adj 值 ( 简介 | 查询进程 PID | 根据进程 PID 查询 oom_adj 值 )
oom_adj 值是 Linux 内核为每个进程分配的 , 该值可以反映进程的优先级 ;
韩曙亮
2023/03/29
5.9K1
【Android 进程保活】oom_adj 值 ( 简介 | 查询进程 PID | 根据进程 PID 查询 oom_adj 值 )
Python非阻塞模式创建子进程并收集其执行结果
编写Python程序,以非阻塞模式创建子进程,分别执行特定的Python代码,检测并控制子进程执行时长,收集和显示程序执行结果。
Python小屋屋主
2022/04/13
1.3K0
Python非阻塞模式创建子进程并收集其执行结果
如何查看并杀死僵尸进程
In UNIX System terminology, a process that has terminated,but whose parent has not yet waited for it, is called a zombie. 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用 wai
小小科
2018/05/02
3.9K0
supervisor和Python多进程multiprocessing使用 子进程残留问题
killasgroup可以说是专门适配了Python的multiprocessing模块,如果配置了stopasgroup=true,那么killasgroup也会默认为true,所以我们只需要配置stopasgroup=true即可,注意stopasgroup和killasgroup发送的信号类型不同。
Autooooooo
2020/11/07
2.2K0
点击加载更多

相似问题

Python -如何杀死进程(而不是子进程)

12

启动新进程,而不是派生进程的子进程

661

通过进程启动python脚本并保存PID

20

如何使父进程显示子进程的PID而不是值变量?

12

使用PID跟踪父进程并显示其子进程和孙进程PID

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档