Как сопоставить файл с / dev / zero - PullRequest
0 голосов
/ 20 июня 2019

Я хочу отобразить файл pcap в / dev / zero и позволить другой программе прочитать / dev / zero. Возможно ли это сделать? Я прочитал книгу APUE и увидел отображение памяти в / dev / zero, но я думаю, что это не то, что я хочу сделать. Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 20 июня 2019

Ваш вопрос немного сбивает с толку.

Дай мне посмотреть, понимаю ли я. Пожалуйста, исправьте меня, где это необходимо:

  1. У вас есть файл .pcap, который вы можете открыть и загрузить его содержимое в программу - давайте назовем программу «A».

  2. Вы хотите сделать содержимое этого файла .pcap доступным в буфере памяти, которым вы делитесь с другой программой - давайте назовем программу «B».

  3. Исходя из примера в книге APUE, ваша идея состоит в том, чтобы mmap / dev / zero в программе A скопировать содержимое файла .pcap в отображенный сегмент памяти, а затем ожидать, что когда программа B также maps / dev / zero, он увидит содержимое файла .pcap.

Это то, что вы собираетесь?

Если это так, то я не думаю, что вы сможете использовать / dev / zero. Каждая из двух программ, когда она имеет mmap / dev / zero, получит отдельный заполненный нулями экземпляр карты памяти. В этом случае единственный способ для этих двух программ - использовать одну функцию в качестве fork () другой.

Однако вы можете создать именованный объект совместно используемой памяти, отличный от "/ dev / zero" (назовите его "/ tmp / mypcap" или что-то в этом роде), и тогда несколько программ смогут использовать его совместно.

...