2015-11-12 3 views
1

У меня есть скрипт, который проходит через много файлов pcap. Для каждого файла pcap мне нужно его прочитать, а затем записать некоторую информацию в txt-файл. Я использую функцию rdcap от Scapy. Есть ли все-таки, чтобы закрыть файл pcap, когда я закончил читать его? Мой сценарий имеет место утечка памяти, и я боюсь, что это может быть виновником (через оставив много PCAP файлов существенно разомкнут)Закрыть rdpcap function - Scapy

ответ

1

Inspecting Scapy «s source code показывает, что функция rdpcap пренебрегает, чтобы закрыть PCAP файл:

@conf.commands.register 
def rdpcap(filename, count=-1): 
    """Read a pcap file and return a packet list 
count: read only <count> packets""" 
    return PcapReader(filename).read_all(count=count) 

Я предлагаю вам реализовать свою собственную версию этой функции следующим образом:

def rdpcap_and_close(filename, count=-1): 
    """Read a pcap file, return a packet list and close the file 
count: read only <count> packets""" 
    pcap_reader = PcapReader(filename) 
    packets = pcap_reader.read_all(count=count) 
    pcap_reader.close() 
    return packets 

Я создал проблему для этой проблемы here.

EDIT: Вопрос был разрешен в this changeset.

Смежные вопросы