Я хотел поделиться некоторыми знаниями, которые я получил, когда столкнулся с проблемами при использовании libpcap и фырканья, чтобы прослушать сетевой канал с высокой пропускной способностью (1 ГБ, полный дуплекс; 2 ГБ, максимальный объем). Приложения успешно прослушивали весь трафик, но зависали, когда размер файла достигал 2 ГБ.
Если у вас есть проблемы с созданием файлов размером 2 ГБ, даже если у вас есть файловая система, которая поддерживает это, и / или вы знаете, что ядро поддерживает это, это для вас.
Ответы:
Поддержка больших файлов (> 2 ГБ) для Linux должна осуществляться в трех разных местах, чтобы избежать ограничения максимального размера файла в 2 ГБ:
Поддержка больших файлов включена в ядре
Файловая система, которая поддерживает файлы большого размера (многие файловые системы на основе Linux поддерживают (ext3, reiserfs> = 3.6 и т. Д.))
Поддержка больших файлов в используемых библиотеках или приложениях
Поддержка ядра для больших файлов существует с 2.4.0-test7; если вы используете собственное ядро, убедитесь, что вы включили параметры большого файла.
Большинство файловых систем Linux поддерживают большие файлы, но у вас могут возникнуть проблемы с использованием сетевой файловой системы.
Наконец, библиотеки (т.е. libpcap) и приложения должны быть скомпилированы с опциями gcc -D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS = 64. Убедитесь, что пакеты, которые вы используете, поставляются предварительно скомпилированными с этими опциями или сверните свои собственные.
Смотрите здесь для более подробной информации.
источник
_FILE_OFFSET_BITS
переходитO_LARGEFILE
кopen
системному вызову на правильной арке, но_FILE_OFFSET_BITS
предпочтительнее для переносимости: stackoverflow.com/questions/2888425/…Похоже, это проблема с libpcap ... Как указано в первом ответе.
Перекомпилируйте libpcap или найдите другую версию.
источник