0

プロセス(Pyroサーバー)を開き、開いたプロセスを呼び出して情報を取得するためのテストスクリプトがあります。すべてが完了すると、プロセスを閉じる必要があります。これはすべて、ステージングサーバーでの自動テストの一部です。

Python 2.6では、次のことができます。

pyro_server = subprocess.Popen(['python', 'pyro_server.py'])
# Do stuff, making remote calls to the Pyro server on occasion
pyro_server.terminate()

残念ながら、私はここでPython 2.4にロックされているため、その関数にアクセスできません。もちろん、スクリプトを終了させるだけで、サーバーは存続します。スクリプトが終了する前にそのプロセスを閉じる/強制終了するにはどうすればよいですか?

4

2 に答える 2

1
  1. subprocess.pyをpython2.4dist-packagesディレクトリにコピーすることを検討してください。古いpopenライブラリの単純なラッパーであるため、機能するはずです。

  2. Popenオブジェクトの終了関数は、次のことだけを実行します。

    os、signalをインポートします

    os.kill(pid、signal.SIGKILL)

pidは、子プロセスのプロセスIDです。signal.SIGKILLは番号9であり、標準のunixkillシグナルです。以下のpopenモジュールを使用して、Python 2.4でサブプロセスを生成し、そのpidを取得する方法を確認できます

于 2009-12-04T01:14:30.783 に答える
0

@BrainCore:os.killはpython24のWindowsでは使用できないことに注意してください。ドキュメントを確認してください。

python24を使用しているときにWindows上のsubprocess.Popenオブジェクトを強制終了するための私の解決策は次のとおりです。

import os, subprocess
p = subprocess.Popen(...)
res = os.system('taskkill /PID %d /F' % p.pid)
于 2013-10-11T09:18:49.767 に答える