2011-03-30 56 views
0

我用C++运行一个外部程序: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 

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

谢谢

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

+0

您使用的是哪个平台?与Python(以半可移植方式为您抽象这些操作)不同,在C中,每个操作系统都以不同的方式进行操作。 – 2011-03-30 06:00:08

+0

@Chris,我正在使用Windows。 – Alex 2011-03-30 06:00:47

+0

无赖,我不知道Windows能够帮助你。但是,无论如何,我发布了一个Unix的答案。 :-P – 2011-03-30 06:02:29

回答

1

有一个MS knowledge base entry描述如何彻底结束应用程序。本质上,如果你只是想杀死这个过程,不关心潜在的副作用,那么你可以使用TerminateProcess

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

0

我只能在Unix上发表评论,因为这是我知道的最好的平台。

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

无论如何,这可能对未来有用:) – Alex 2011-03-30 06:03:18

相关问题