0

我用 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() 的替代方法是什么?

谢谢

也欢迎涉及 WinAPI 的 PS 解决方案。

4

3 回答 3

1

有一个MS 知识库条目描述了如何干净地终止应用程序。本质上,如果您只想终止进程并且不关心潜在的副作用,那么您可以使用TerminateProcess.

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

于 2011-03-30T06:22:35.323 回答
0

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

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

或者你检查一下 Python 的资源模块:

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

于 2011-03-30T06:01:08.573 回答
0

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

  • p.poll()变成kill(pid, 0)
  • p.terminate()变成kill(pid, SIGTERM)
于 2011-03-30T06:01:47.307 回答