2011-03-30 3 views
0

나는 C++와 외부 프로그램을 실행합니다 : 그것은 이상 n 초 동안 실행하면C++ : 외부 프로그램이 실행 중인지 확인하는 방법?

_wsystem(exec); 

내가 프로세스를 종료하고 싶습니다. 나는이 같은 파이썬에서 작업을 수행 할 수 있습니다

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. WinAPI와 관련된 솔루션도 환영합니다.

+0

사용중인 플랫폼은 무엇입니까? 파이썬과 달리 (이식성있는 방식으로 이러한 연산을 추상화합니다.) C에서는 각 운영 체제가 다르게 작동합니다. –

+0

@Chris, 저는 Windows를 사용하고 있습니다. – Alex

+0

어리석은, 나는 당신을 거기에서 도울 Windows 잘 모른다. 하지만 어쨌든 나는 유닉스 대답을 올렸다. :-P –

답변

1

깔끔하게 애플리케이션을 종료하는 방법을 설명하는 MS knowledge base entry 존재하게된다. 본질적으로 단지 프로세스를 죽이고 잠재적 인 부작용에 신경 쓰지 않는다면 TerminateProcess을 사용할 수 있습니다.

프로세스가 아직 실행 중인지 확인하는 Windows API 방법은 GetExitCodeProcess입니다.

0

, 그게 내가 가장 잘 알고 플랫폼이기 때문에.

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

어쨌든 고맙겠습니다, 이것은 앞으로 유용 할 것입니다 :) – Alex