我想从python(我在linux下)控制几个相同类型的子进程。 我想:
我可以使用spawnl启动进程,并获取pid。使用这个pid我可以用kill来阻止它。而且我确信还有一种方法可以询问它是否与pid一起运行。
问题是,如果发生以下情况该怎么办: 我开始一个过程,记住pid。该过程在我没有注意到的情况下结束,另一个完全不同的过程开始被分配相同的pid。我试图杀死我的过程,我杀了一个完全不同的过程。
在python中启动和控制进程的更好方法是什么? 谢谢!
答案 0 :(得分:7)
您可以使用subprocess.Popen启动其他流程,并保存生成的Popen object。使用该对象上的方法,您可以检查进程是否仍然存在,等待它完成,终止它,终止它 - 所有这些都没有任何基于pid的混淆风险!另外,这也是一种更加跨平台的方法,尽管在这种情况下您可能并不特别关注。