Fix bug when interrupting/killing a process, caused console to stop displaying
This commit is contained in:
@@ -53,7 +53,7 @@ class Airodump(object):
|
|||||||
'''
|
'''
|
||||||
# Kill the process
|
# Kill the process
|
||||||
self.pid.interrupt()
|
self.pid.interrupt()
|
||||||
self.pid.kill()
|
|
||||||
# Delete temp files
|
# Delete temp files
|
||||||
self.delete_airodump_temp_files()
|
self.delete_airodump_temp_files()
|
||||||
|
|
||||||
|
|||||||
@@ -70,24 +70,30 @@ class Process(object):
|
|||||||
''' Returns exit code if process is dead, otherwise "None" '''
|
''' Returns exit code if process is dead, otherwise "None" '''
|
||||||
return self.pid.poll()
|
return self.pid.poll()
|
||||||
|
|
||||||
def kill(self):
|
|
||||||
''' Kill current process '''
|
|
||||||
if self.pid.poll() == None:
|
|
||||||
# Process is already killed
|
|
||||||
return
|
|
||||||
try:
|
|
||||||
self.pid.kill()
|
|
||||||
except OSError, e:
|
|
||||||
if 'No such process' in e.__str__():
|
|
||||||
return
|
|
||||||
raise e
|
|
||||||
|
|
||||||
def interrupt(self):
|
def interrupt(self):
|
||||||
''' Send interrupt to current process '''
|
'''
|
||||||
from signal import SIGINT
|
Send interrupt to current process.
|
||||||
|
If process fails to exit within 1 second, terminates it.
|
||||||
|
'''
|
||||||
|
from signal import SIGINT, SIGTERM
|
||||||
from os import kill
|
from os import kill
|
||||||
|
from time import sleep
|
||||||
try:
|
try:
|
||||||
kill(self.pid.pid, SIGINT)
|
pid = self.pid.pid
|
||||||
|
kill(pid, SIGINT)
|
||||||
|
|
||||||
|
wait_time = 0 # Time since Interrupt was sent
|
||||||
|
while self.pid.poll() == None:
|
||||||
|
# Process is still running
|
||||||
|
wait_time += 0.1
|
||||||
|
sleep(0.1)
|
||||||
|
if wait_time > 1:
|
||||||
|
# We waited over 1 second for process to die
|
||||||
|
# Terminate it and move on
|
||||||
|
kill(pid, SIGTERM)
|
||||||
|
self.pid.terminate()
|
||||||
|
break
|
||||||
|
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
if 'No such process' in e.__str__():
|
if 'No such process' in e.__str__():
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user