0

サブプロセスでsnmpdを開始し、これへの参照をグローバル変数として保存し、後でこのプロセスを強制終了したいと考えています。

私は次のようにプロセスを開始します:

snmp_proc = subprocess.Popen(['snmpd', '-p', pid_file,'-Lf', log_file],
                              stdout=open(os.devnull,'w'),stderr=subprocess.STDOUT)

これは正しく起動しますが、ある種のゾンビ プロセスも作成しているように見えますか? ps ax の出力は次のとおりです。

1716 ?        Z      0:00 [snmpd] <defunct>
1718 ?        S      0:00 snmpd -p /var/run/snmpd.pid -Lf /var/log/snmpd

後でプロセスを強制終了しようとすると、機能していないゾンビプロセスのみが強制終了され、他のプロセスは残ります。私が間違っていることは何か分かりますか?snmpd を停止するコードは次のとおりです。

def stop_snmp(): 
    global snmp_proc
    if not snmp_proc:
        return 
    snmp_proc.terminate()
    snmp_proc.wait()
    snmp_proc = None
4

1 に答える 1