- 55
- 0
1.有三个py文件并用pyinstaller进行封装a.exe;b.exe;c.exe
a.exe是一个图形化界面程序,通过subprocess调用b.exe,代码如下:
child = subprocess.Popen("b.exe %s -d %s -t %s "%(value,key1,key2))
b.exe是主程序,在b.exe得到pid并通过subprocess传递给c.exe,代码如下:
pid = os.getpid()
ch = subprocess.Popen("c.exe %d"%pid)
c.exe是一个监控程序,用于监控主程序b.exe是否在正常运行。
现在的问题是,我在a.exe这个图形化界面中按下一个stop按钮,需要终止b.exe。
但是封装之后,会产生两个b.exe进程,child返回的是内存小的那个进程,只杀死这个进程并不能终止b.exe的运行。
请问各位大神,有没有其他的好方法呢?
- 共 0 条
- 全部回答
-
風起丶吹散誰的容顔 普通会员 1楼
在大多数编程语言中,你无法直接终止子程序的执行。你只能终止父程序的执行,而不能终止子程序的执行。
然而,你可以在某些情况下修改子程序的行为,使其能够在父程序停止时自动停止。这通常在处理某些类型的错误或异常时发生,或者在某些情况下,你希望子程序在遇到错误时仍然可以继续执行。
以下是一个在Python中使用
subprocess模块终止子程序的例子:```python import subprocess
def main(): # 执行子程序 subprocess.call(['subscript', 'script_name']) # 在子程序中处理异常或终止子程序 if some_condition: subprocess.call(['kill', '0']) # 或者,你可以继续执行子程序,直到主程序停止 main()
if name == 'main': main() ```
在这个例子中,
subscript和script_name是子程序的命令和名称,some_condition是子程序可能遇到的错误或异常的条件。如果some_condition为真,subprocess.call(['kill', '0'])将杀死子程序的PID,这将终止子程序的执行。请注意,这只是一个基本的例子,实际的终止子程序的方法可能根据你的具体需求和编程语言的特性而异。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
