Eu queria compartilhar um pouco do conhecimento adquirido quando tive problemas ao usar o libpcap e o snort para detectar um link de rede de alta capacidade (1 GB full duplex; 2 GB no máximo). Os aplicativos farejavam todo o tráfego com êxito, mas travavam quando o tamanho do arquivo atingia 2 GB capturados.
Se você está tendo problemas com a criação de arquivos de 2 GB, mesmo que tenha um sistema de arquivos que o suporte e / ou saiba que o kernel suporta, isso é para você.
Respostas:
O suporte a arquivos grandes (> 2 GB) para Linux precisa ser tratado em três locais separados para garantir que você não atinja o limite máximo de tamanho de arquivo de 2 GB:
Suporte a arquivos grandes ativado no kernel
Um sistema de arquivos que suporta grandes tamanhos de arquivo (muitos sistemas de arquivos baseados em Linux suportam (ext3, reiserfs> = 3.6, etc))
Suporte a arquivos grandes nas bibliotecas ou aplicativos utilizados
O suporte do kernel para arquivos grandes existe desde o 2.4.0-test7; se você usar um kernel personalizado, inclua as opções de arquivos grandes.
A maioria dos sistemas de arquivos Linux suporta arquivos grandes, mas você pode ter problemas ao usar um sistema de arquivos em rede.
Por fim, bibliotecas (por exemplo, libpcap) e aplicativos precisam ser compilados com as opções do gcc -D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS = 64. Verifique para garantir que os pacotes que você está usando sejam pré-compilados com essas opções ou role seus próprios.
Veja aqui para mais detalhes.
fonte
_FILE_OFFSET_BITS
passaO_LARGEFILE
para oopen
syscall no arco correto, mas_FILE_OFFSET_BITS
é preferível para portabilidade: stackoverflow.com/questions/2888425/…Parece que isso é um problema com a libpcap ... Como indicado na primeira resposta.
Recompile a libpcap ou encontre outra versão.
fonte