Я застрял в хитрой проблеме, чтобы проверить, работает ли поток демона.Поток демона, который я создал, должен работать в фоновом режиме, чтобы служба работала, поэтому я создаю и поддерживаю ее следующим образом:
Создание:
ASThread = threading.Thread(target = initAirserv, args=[],)
ASThread.setDaemon(True)
ASThread.start()
Внутри initAirserv()
method:
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 никогда не выполняется.Может кто-нибудь объяснить мне, почему это происходит?Какой лучший способ запустить поток, который выполняет то, что должно быть постоянно занятым?Большое спасибо.