Изменение существующего размера сегмента разделяемой памяти - PullRequest
1 голос
/ 14 февраля 2010

У меня есть устаревший код, который использует shmget / shmat / shmdt для создания, подключения и управления сегментами общей памяти.

Приложение с кодом иногда падает, оставляя сегменты в памяти. Код повторно использует один и тот же ключ сегмента для повторного подключения к ним, но проблема заключается в том, что он каждый раз использует разные размеры общей памяти и не может подключиться из-за этого.

Мой вопрос:

1) Можно ли изменить размер общей памяти при подключении?

2) Если нет, как я могу подключиться к сегменту общей памяти (даже если я не могу знать размер), чтобы стереть его (для последующего повторного создания более нового)?

Спасибо!

1 Ответ

1 голос
/ 14 февраля 2010

Вы можете использовать shmctl , чтобы удалить и создать свой собственный размер. Я предполагаю, что унаследованный код попытается использовать существующую разделяемую память, если он не может shmget?

...