Я не могу поделиться указателем на объект среди процессов с общей памятью.
Я могу успешно разделить структуру, подобную приведенной ниже, между различными процессами:
// Data to be shared among processes
struct Shared_data {
int setPointCounter;
struct Point old_point;
pthread_mutex_t my_mutex;
} *shd;
Структура объявленакак глобальный (он расположен перед main (), скажем так).
Я инициализирую общую память в основную:
shd = (struct Shared_data *) (mmap(NULL, sizeof *shd, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0));
, а затем в определенный момент я делаю форк(). Это работает нормально.
Проблема возникает, когда я должен поделиться чем-то вроде этого:
// Data to be shared among processes
struct Shared_data {
int setPointCounter;
struct Point old_point;
MyObject *obj;
pthread_mutex_t my_mutex;
} *shd;
В основном я вызываю функцию из сторонней библиотеки, которая возвращает указатель наобъект типа MyObject, и я хотел бы поделиться им в некотором роде. Как я могу это сделать?
При поиске в Интернете я нашел что-то, связанное с относительными указателями, но я не уверен, что это сработает, и в то же время я не знаю, как это сделать. это правильный путь.
Я работаю в Linux (Slackware 64 14.2), и язык C / C ++ (в основном это C, на самом деле).
Заранее спасибо за ваше время.