Я использую System V общую память в своей программе. Процесс писателя успешно создает общую память, используя shmget () . Когда процесс писателя заканчивается, я замечаю, что сегмент общей памяти исчезает, хотя я не call shmctl () с ipc_rmid для его удаления.
Вот код для автора:
Вот код для чтения: < /p>
// reader.c
#include
#include
#include
#include
#define SHM_KEY 0x1234
#define SHM_SIZE sizeof(int)
int main() {
int shmid = shmget(SHM_KEY, SHM_SIZE, 0666);
if (shmid == -1) {
perror("shmget failed");
exit(1);
}
int *shm_ptr = (int *)shmat(shmid, NULL, 0);
if (shm_ptr == (void *)-1) {
perror("shmat failed");
exit(1);
}
printf("Reader: read %d from shared memory.\n", *shm_ptr);
shmdt(shm_ptr);
return 0;
}
[/code]
Когда я запускаю писатель, я вижу общую память, используя IPCS -M . Однако после того, как писатель заканчивает и выходит, сегмент общей памяти исчезает, и я не могу получить к нему доступ к читателю. < /P>
Что может вызвать такое поведение? Есть ли настройка системы, которая может привести к автоматическому удалению общей памяти после выхода писателя? Эта программа работает правильно на macos , где общая память сохраняется после выхода писателя. Тем не менее, это не удается на linux : общий сегмент памяти исчезает, как только процесс писателя заканчивается, и я не могу получить к нему доступ к читателю.>
Подробнее здесь: https://stackoverflow.com/questions/795 ... mctl-is-no
Общая память исчезает после завершения процесса писателя, хотя SHMCTL не используется для его удаления ⇐ Linux
1742123875
Anonymous
Я использую System V общую память в своей программе. Процесс писателя успешно создает общую память, используя shmget () . Когда процесс писателя заканчивается, я замечаю, что сегмент общей памяти исчезает, хотя я [b] не [/b] call shmctl () с ipc_rmid для его удаления.
Вот код для автора:
Вот код для чтения: < /p>
// reader.c
#include
#include
#include
#include
#define SHM_KEY 0x1234
#define SHM_SIZE sizeof(int)
int main() {
int shmid = shmget(SHM_KEY, SHM_SIZE, 0666);
if (shmid == -1) {
perror("shmget failed");
exit(1);
}
int *shm_ptr = (int *)shmat(shmid, NULL, 0);
if (shm_ptr == (void *)-1) {
perror("shmat failed");
exit(1);
}
printf("Reader: read %d from shared memory.\n", *shm_ptr);
shmdt(shm_ptr);
return 0;
}
[/code]
Когда я запускаю писатель, я вижу общую память, используя IPCS -M . Однако после того, как писатель заканчивает и выходит, сегмент общей памяти исчезает, и я не могу получить к нему доступ к читателю. < /P>
Что может вызвать такое поведение? Есть ли настройка системы, которая может привести к автоматическому удалению общей памяти после выхода писателя? Эта программа [b] работает правильно [/b] на [b] macos [/b], где общая память сохраняется после выхода писателя. Тем не менее, это [b] не удается [/b] на [b] linux [/b]: общий сегмент памяти исчезает, как только процесс писателя заканчивается, и я не могу получить к нему доступ к читателю.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79512467/shared-memory-disappears-after-writer-process-finishes-even-though-shmctl-is-no[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия