デーモン スレッドが実行されているかどうかをテストするという難しい問題に行き詰まっています。作成したデーモン スレッドは、サービスを実行し続けるためにバックグラウンドで実行する必要があるため、次のようにして作成し、存続させます。
作成:
ASThread = threading.Thread(target = initAirserv, args=[],)
ASThread.setDaemon(True)
ASThread.start()
メソッドの内部initAirserv()
:
def initAirserv(self, channel="15"):
interface = self.execAirmon(options="start", interface=self.interface)
port = self.plug_port
if interface != "removed":
if channel=="15":
command = "airserv-ng -d " +str(interface)+" -p "+str(port)
else:
command = "airserv-ng -d " +str(interface)+" -p "+str(port)+" -c"+str(channel)
else:
return None
AServConn=self.init_Plug()
if AServConn:
(stdin, stdout, stderr) = AServConn.exec_command(command)
serv_op = stdout
serv_er = stderr
##### keep the daemon thread run persistently ####
a = 0
while 1:
a += 1
else:
logging.debug( "SSH Error" )
最後の数行の目的は、愚かな方法を使用してスレッドをビジー状態に保つことです。ただし、このデーモンスレッドを開始して別のことをした後、戻ってきてスレッドを次のように確認しました。
if ASThread.is_alive() == 1:
# do something
if 本体は決して実行されません。誰かが私になぜこれが起こるのか説明できますか? 常にビジーである必要がある何かを実行するスレッドを実行する最良の方法は何ですか? どうもありがとう。