У меня есть 3 функции для выполнения:
- Запуск
tcpdump
- Выполнение сетевой активности, чтобы
tcpdump
мог сгенерировать pcap для него - Kill
tcpdump
после завершения сетевой операции на шаге 2.
Запустите
def launch_tcpdump(output_filename):
import subprocess as sp
import time
process = sp.Popen(['tcpdump', '-i', 'wlo1', '-w', output_filename])
print(f"PID: {process.pid}")
time.sleep(5)
return process
, если я не сплю в течение 5 секунд, то до инициализации tcpdump
мой сценарийзавершает сетевую активность.С другой стороны, сон в течение 5 секунд кажется чрезмерным и замедляет мой общий процесс (я должен делать это несколько раз и генерировать pcaps для каждой сетевой активности).
- Есть ли способы для ребенкапроцесс, чтобы сообщить родительскому процессу, который он инициализировал?
- Если нет, может ли родительский процесс (python) что-то проверить, чтобы определить, инициализирован ли процесс?
Примечание: Iпонимать, что initialized может означать разные вещи в случае разных процессов.Я предполагаю, что как только он выдаст: tcpdump: listening on wlo1, link-type EN10MB (Ethernet), capture size 262144 bytes
, инициализация завершена.Таким образом, чтение stdout также является потенциальным вариантом, но я не могу найти решения, которые могут читать из stdout при отключении python от дочернего процесса.