2011-03-30 59 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

相關問題