私は、次のコードました:私はプロセスを終了すると、スレッドも停止しますか?
#!/usr/bin/python3
import os
import subprocess
import time
import threading
class StartJar(threading.Thread):
def run(self):
os.system("java -jar <nazwa_appki>.jar")
jarFileRun = StartJar
current_location = subprocess.getoutput("pwd")
while True:
x = subprocess.getstatusoutput("git checkout master && git reset --hard && git fetch && git pull")
if x[0] is 0:
os.system("git checkout master && git reset --hard && git fetch && git pull")
os.system("mvn clean package ~/your/path")
try:
process_pid = subprocess.check_output(['pgrep', '-f', 'tu_podaj_nazwe_procesu']).decode()
except subprocess.CalledProcessError as e:
print("pgrep failed because ({}):".format(e.returncode), e.output.decode())
else:
try:
os.kill(int(process_pid), 9)
print('Process with ' + process_pid + ' PID was killed.')
except ProcessLookupError as e:
print("Process were old...")
except ValueError as e:
print("There is no such process!")
os.system("cp ~/your/path" + ' ' + current_location)
jarFileRun.start()
else:
print('No changes was made...')
time.sleep(1800)
をそして私は、私は私のスレッドが実行されるプロセスを殺すならば、それは同様閉じてしまうだろうか?もし私が実行したいファイルのために出てきた新しい変更でもう一度それを実行できるようにスレッドを終了するにはどうすればいいですか? 私はgoogleでスレッドを停止するものを見つけ出そうとしましたが、while文の最初の行に追加したときにはうまくいきませんでした。
はいためのクラス内部の初期化の定義を行います。あなたはあなたの
StartJar
クラスを削除し、このようなjarFileRun
を定義することができますそうするためには。トレッドはプロセスの内部で実行され、プロセスが終了するとスレッドがスレッド内で実行されます。しかし、それは自分自身をテストするのは簡単です。 – cdarke
なぜJavaをスレッドとして実行しているのですか?バックグラウンドプロセスとして実行しないのはなぜですか? – cdarke