C ++:如何检查外部程序是否正在运行?

时间:2011-03-30 05:57:37

标签: python c++ windows external-process process-management

我使用C ++运行外部程序:

_wsystem(exec);

如果运行时间超过n秒,我想终止该进程。我可以用Python这样做:

p = subprocess.Popen(self.temp_exec, shell=True)

cur_time = 0.0

while cur_time < self.time_limit:
            if p.poll() != None:
                # Kill the process
                                    p.terminate()
                break
            time.sleep(0.1)
            cur_time += 0.1

p ++中p.poll()和p.terminate()的替代方法是什么?

谢谢

P.S。涉及WinAPI的解决方案也是受欢迎的。

3 个答案:

答案 0 :(得分:1)

有一个MS knowledge base entry描述如何干净地终止应用程序。基本上如果你只想杀死这个过程并且不关心潜在的副作用,那么你可以使用TerminateProcess

检查进程是否仍在运行的Windows API方法是GetExitCodeProcess

答案 1 :(得分:0)

如果您可以在操作系统级别解决此问题而不使用Python。例如。可能会调查

http://devel.ringlet.net/sysutils/timelimit/

或者您检查Python的资源模块:

http://docs.python.org/library/resource.html

答案 2 :(得分:0)

我只能评论Unix,因为那是我最熟悉的平台。

  • p.poll()变为kill(pid, 0)
  • p.terminate()变为kill(pid, SIGTERM)