Как остановить поток, который работает с ОС

Столкнулся со следующей проблемой. Разрабатываю систему автоматизированного тестирования. В ходе проведения теста мне нужно снять дамп. То есть в начале теста начал писать pcap, по окончанию перестал и сохранил.

Для снятия дампа создаю отдельный поток и флаг на остановку дампа

global still_dumping #The trigger to stop tcpdump.
still_dumping = False

if check_dump:
    still_dumping = True
    threading.Thread(target=dump(host_port)).start()  # Make a thread for tcpdump.

def dump(host_port):

if not still_dumping:
    os.system('killall -9 tcpdump')
    return

os.system('tcpdump -w testDump.pcap -i lo0 port ' + str(host_port) + ' &')

Однако воткнулся что при попадании на tcpdump поток зависает, потому что ничего формально tcpdump не останавливает и соответственно на killall он никогда не попадает.

Прошу помочь советом как его выдернуть из tcpdump.


Ответы (1 шт):

Автор решения: Tim-Tam

Спасибо! Разобрался с suprocess и решил задачу через него. Для следующих ищущих привожу сюда кусок кода

prc_dump = subprocess.Popen(['tcpdump', '-w', 'testDump.pcap', '-i', 'lo0', 'port', '8888']) 

//Сделали что-то что нужно сделать 
prc_dump.terminate() – 
→ Ссылка