Я использую комбинацию shm_open()
и mmap()
для создания сегмента общей памяти для IPC. Что мне интересно, так это то, как очищаются файлы поддержки (в /dev/shm
в моей системе, ядро Linux 2.6.31).
У меня три вопроса:
1) Процесс несет ответственность за удаление файлов после завершения? Если так, то что, если процесс умирает, прежде чем он их не связывает?
2) Поскольку я подозреваю, что ответ на вопрос № 1 «да, это ответственность программы», считается ли это «хорошей практикой» для моей программы удалять все устаревшие файлы, которые она замечает, перед созданием нового, в случае, если предыдущие экземпляры нечисто умер?
3) Есть ли способ попросить ядро удалить файл резервной копии после того, как последний процесс освободит память? Я думаю о чем-то похожем на shmctl(id, IPC_RMID, ...)
в разделяемой памяти в стиле SysV.