タスクを 1 つずつ実行するように設計された大きなスクリプトがあります。しかし、start-stop-daemon を使用していつでもスクリプトを強制終了する init スクリプトがあります。スクリプトは正常に終了しますが、subprocess コマンドは終了するまで実行されます。グローバル変数をどのように処理しようとしているかに問題があるのではないかと思います。または、サブプロセスと .communicate を使用しています。とにかく、コードから関連するものは次のとおりです。
import subprocess
import os
import signal
pro = ''
def sigHandler( signum, frame ):
global pro
os.killpg( pro.pid, signal.SIGTERM )
sys.exit()
def run(data):
#I found an example using preexec_fn somewhere on stackoverflow. Cant
#remember if they were using .communicate() or not
global pro
pro = subprocess.Popen( command, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = False, preexec_fn = os.setsid ).communicate()
return( 1 )
if __name__ == '__main__':
signal.signal( signal.SIGTERM, sigHandler )
while True:
run( relevantData )