В системе общей памяти, когда два процесса совместно используют общую систему памяти, после того, как один процесс будет убит, как другой процесс будет уведомлен об убитом процессе с помощью системы общей памяти?IPC: общая память уничтожена в процессе обработки
ответ
Общая память, как следует из названия, является памятью , пассивным объектом. Вам нужно использовать мьютекс, чтобы отслеживать активность другого приложения. Каждое приложение создает свой собственный мьютекс и ждет другого процесса. Если приложение завершено, состояние мьютекса переходит в «Заброшенное».
Один из способов состоит в том, чтобы родительский/управляющий процесс запускал все остальные процессы в качестве детей. Когда любой ребенок умирает, родитель получает SIGCHLD
и может обрабатывать очистку разделяемой памяти/ресурсов разумным способом.
PostgreSQL следует за этим шаблоном проектирования с его почтмейстерскими и рабочими процессами.
Обратите внимание, что в большинстве систем Unix мьютексы не будут изменены/разблокированы ОС во время процесса смерти. Семафоры предлагают функцию UNDO, но они, по общему признанию, намного тяжелее, чем мьютексы. YMMV.
Большое спасибо CoreyStup. http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html для справки: SIGCHLD 20,17,18 Ign Ребенок остановлен или прекращен –
- 1. electronic.atom.io и общая память
- 2. Общая память или mmap - Linux C/C++ IPC
- 3. C - fork() и общая память
- 4. Почему этот код дает segfault? Общая память IPC SYSV
- 5. Общая память, отмеченная как виртуальная память?
- 6. Общая память в mpi4py
- 7. Windows-защищенная общая память
- 8. Одиночная ценность Общая память/свободная память Свободная память/общая память
- 9. Re: Общая память и семафоры
- 10. Python: память в отдельном процессе
- 11. Общая память в C
- 12. Общая память в матрице, умножающая множественные процессы
- 13. Общая память в адресном пространстве процесса?
- 14. Где находится общая память Linux?
- 15. Будет ли память уничтожена или нет?
- 16. Boost, общая память и векторы
- 17. Общая память + каталоги POSIX
- 18. общая память и константы
- 19. Постоянная общая память GPU
- 20. Общая память с докером
- 21. Форки и общая память
- 22. Общая память между потоками
- 23. Общая память linux
- 24. Защищенная общая память?
- 25. Общая память Linux
- 26. Общая память - матричное отображение
- 27. , где распределяется общая память?
- 28. Общая память устройства UWP
- 29. Perl fork() общая память
- 30. Python Multiprocessing - общая память
Большое спасибо Eugene Mayevski 'EldoS. http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html для справки: SIGCHLD 20,17,18 Ign Ребенок остановлен или завершен –
@ mav_2k Если вы говорите об Linux или Unix, возможно, вам придется отразить это, установив соответствующие теги для вашего вопроса. –