私はこれを行うプログラムを作成しようとしています:
- スレッドでプログラム 1 を呼び出します
- 別のスレッドでプログラム 2 を呼び出します
- プログラム 1 が最初に終了する場合は、プログラム 2 を終了するか、その逆です。
私は長い間試してきましたが、これらは私の現在の問題です:
- Thread モジュールをインポートできません (スレッド化ではありません!)。
- 関数またはクラス、それが問題です。
subprocess.Popen を使用してプロセスを呼び出す方法と、コマンドライン関数を使用してプロセスを強制終了する方法は既に知っています。PIDの取得方法も知っています。
これが私の実際のコードです:
import threading, subprocess, shlex
class Prog1(threading.Thread):
def __init__(self, arg=''):
self.arg = arg
threading.Thread.__init__(self)
def run(self):
p = subprocess.Popen(shelx.split(self.arg))
global p.pid
subprocess.Popen(shelx.split("kill -9 " + q.pid))
class Prog2(threading.Thread):
def __init__(self, arg=''):
self.arg = arg
threading.Thread.__init__(self)
def run(self):
q = subprocess.Popen(shelx.split(self.arg))
global q.pid
subprocess.Popen(shelx.split("kill -9 " + p.pid))