用Python控制进程
我想在Python中控制几个相同类型的子进程(我在使用Linux)。我想要做的事情有:
- 启动它们。
- 停止它们。
- 询问它们是否还在运行。
我可以用spawnl来启动一个进程,并获取它的进程ID(pid)。然后我可以用这个pid来停止它,使用kill命令。而且我相信也有办法通过pid来检查它是否还在运行。
但问题是,如果发生以下情况:我启动了一个进程,记住了它的pid。这个进程结束了,我没有注意到,然后另一个完全不同的进程开始并被分配了同样的pid。这样我试图杀掉我的进程时,结果却杀掉了一个完全不同的进程。
那么,在Python中启动和控制进程的更好方法是什么呢?谢谢!
1 个回答
7
你可以使用 subprocess.Popen 来启动另一个进程,并保存生成的 Popen 对象。通过这个对象的方法,你可以检查这个进程是否还在运行,等待它完成,终止它,或者直接杀掉它——这一切都不会出现基于进程ID的混淆问题!另外,这种方法在不同的操作系统上都能用,虽然在这个情况下你可能不太在意。