библиотека json, которая позволяет совместно использовать память в c

#c #json #shared-memory

#c #json #разделяемая память

Вопрос:

Я пытаюсь разделить объект json между несколькими процессами. Код написан на C. В настоящее время я использую json-c, который работает довольно хорошо. Есть ли способ заставить библиотеку выделять в общую память? Если нет, то какая библиотека c позволит мне это сделать?

Спасибо

Комментарии:

1. считайте ваш json просто массивом байтов. совместное использование транка байтов в C похоже на поедание торта

Ответ №1:

Ваш вопрос зависит от конкретной ОС. Я предполагаю, что это на Linux.

Я не вижу простого способа (в частности, для изменяющегося JSON), поскольку общая память имеет некоторый фиксированный размер, см. shm_overview (7). Или, по крайней мере, создайте строку JSON, затем выделите для нее общую память (достаточно большого размера) и скопируйте строку JSON.

Рассматривали ли вы возможность использования файловой системы RAM, например, файловой системы tmpfs? Это должно быть быстро.

ПРИМЕЧАНИЕ

Настройки распределителя памяти библиотеки JSON (как это делает Янссон — исходный код находится на github) недостаточно, поскольку разные процессы обычно используют память по разным адресам.

Комментарии:

1. В основном все, что требуется, — это указать, как выделяется и освобождается память. Кто-нибудь знает библиотеку json, которая позволяет это.

2. @Mobius Это зависит. Сегменты общей памяти часто отображаются в разных местах в разных процессах. Это означает, что вы не можете хранить объекты, содержащие указатели, в сегменте общей памяти, поскольку эти указатели действительны только в процессе, который их создал.