Я хотел бы выделить память в Linux в процессе работы по определенному адресу.
На самом деле я хотел бы сделать что-то вроде:
У меня будет номер процесса.
Каждый процесс будет вызывать функцию инициализации в библиотеке (написанной мной), которая будет выделять некоторую память в адресном пространстве процесса (которая будет хранить информацию, связанную с процессом). Это будет сделано каждым процессом
Как только эта память будет выделена, последняя будет вызывать другую функцию в библиотеке. Теперь эти функции хотели бы получить доступ к памяти, выделенной (содержащей информацию, связанную с процессом) первой функцией.
Проблема в том, что я не могу сохранить адрес памяти, выделенной в адресном пространстве процесса, в библиотеке (даже в статическом указателе, так как номер процесса), и я даже не хочу, чтобы пользовательская программа сохраняла этот адрес. Я просто не хочу, чтобы пользовательская программа знала, что в их адресном пространстве есть память, выделенная библиотекой. Библиотечная функция будет для них абстракцией, и они должны просто использовать их.
Возможно ли преодолеть эту проблему?
Я думал, что всякий раз, когда какой-либо процесс вызывает функцию инициализации библиотеки, которая выделяет память, память всегда выделяется по одному и тому же адресу (скажем, 10000) во всем процессе, независимо от всех других вещей.
Так что любая библиотечная функция, которая хочет получить доступ к этой памяти, может легко сделать:
char *p=10000;
и затем доступ, который будет доступом к адресному пространству процесса, который вызвал библиотечную функцию.