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 を使用せずに OS レベルで解決できる場合。例えば、調べるかもしれません

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 に答える