gpt4 book ai didi

python - Popen-ing 使用多处理调用脚本的 python 调用(pgrp 问题)?

转载 作者:太空宇宙 更新时间:2023-11-03 19:21:10 25 4
gpt4 key购买 nike

我正在为服务器编写一个单元测试框架,它使用 popen 基本上执行 shell=False 的“python myserver.py”,运行一些测试,然后继续通过killpg关闭服务器。

这个 myserver.py 可以并且将会使用多重处理来生成它自己的子进程。问题是,从我的测试来看,服务器进程的 pgrp pid 似乎与运行单元测试的实际主线程共享相同的组 pid,因此在组 pid 上执行 os.killpg 不仅会关闭服务器,还有调用 popen 的过程(不是我想做的)。为什么要这样做?我怎样才能使它们位于我可以独立杀死的单独组 pid 上?

最佳答案

你在这里问的是一些相当困惑的事情。我怀疑这些都不是您想要做的,并且您确实希望以某种更简单的方式来完成此任务。但是,假设您真的想搞乱进程组......

通常,新的进程组仅由 setpgrp(2) 系统调用创建。否则,由 fork(2) 创建的进程始终是当前进程组的成员。也就是说,在创建新的进程组时,该组中的进程甚至不受任何 tty 控制,并且正确执行您似乎想要执行的操作需要了解整个进程组模型。 Stevens 的“Unix 环境中的高级编程”是关于这一切如何工作的一个很好的引用,其中详细介绍了它。

如果你真的想走这条路,你必须自己实现 popen 或等效的方法,并进行所有适当的系统调用。

关于python - Popen-ing 使用多处理调用脚本的 python 调用(pgrp 问题)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9722778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com