2010-06-02 64 views
3

我想控制从python(我在Linux下)相同类型的几个子进程。 我想:控制从Python的进程

  • 开始他们。
  • 阻止他们。
  • 询问他们是否仍在运行。

我可以用spawn来启动一个进程,并获得pid。使用这个pid,我可以用kill来阻止它。我相信还有一种方法可以询问它是否与pid一起运行。

问题是,如果发生以下情况会怎样: 我开始一个进程,记住pid。该过程结束时没有我注意到,另一个完全不同的过程开始分配相同的PID。我试图杀死我的过程,我杀了一个完全不同的过程。

在Python中启动和控制进程的更好方法是什么? 谢谢!

回答

7

您可以使用subprocess.Popen启动其他进程,并保存结果Popen object。通过该对象上的方法,您可以检查进程是否仍然存在,等待它结束,终止它,杀死它 - 所有这些都没有任何基于pid的混淆的风险!作为一个优点,这也是一种更为跨平台的方式,尽管在这种情况下你可能并不在乎。