Ваш вопрос немного сбивает с толку.
Дай мне посмотреть, понимаю ли я. Пожалуйста, исправьте меня, где это необходимо:
У вас есть файл .pcap, который вы можете открыть и загрузить его содержимое в программу - давайте назовем программу «A».
Вы хотите сделать содержимое этого файла .pcap доступным в буфере памяти, которым вы делитесь с другой программой - давайте назовем программу «B».
Исходя из примера в книге APUE, ваша идея состоит в том, чтобы mmap / dev / zero в программе A скопировать содержимое файла .pcap в отображенный сегмент памяти, а затем ожидать, что когда программа B также maps / dev / zero, он увидит содержимое файла .pcap.
Это то, что вы собираетесь?
Если это так, то я не думаю, что вы сможете использовать / dev / zero. Каждая из двух программ, когда она имеет mmap / dev / zero, получит отдельный заполненный нулями экземпляр карты памяти. В этом случае единственный способ для этих двух программ - использовать одну функцию в качестве fork () другой.
Однако вы можете создать именованный объект совместно используемой памяти, отличный от "/ dev / zero" (назовите его "/ tmp / mypcap" или что-то в этом роде), и тогда несколько программ смогут использовать его совместно.