Я использую общую память в модели клиент-сервер. Когда мой сервер отключен пользователем с помощью sigkill вместо sigterm / sigint, я ничего не могу с этим поделать (как и предполагалось), но мой объект общей памяти и семафоры все еще существуют в / dev / shm /.
В следующий раз, когда я запускаю свой сервер, я хочу создать новый объект с точно таким же именем, и, как и предполагалось, это не удается, и я выхожу из своей программы.
Пользователь должен будет удалить объекты самостоятельно - что, конечно, не самое лучшее.
Как мне с этим справиться?
Я мог бы просто вызвать shm_open () без флага O_EXCL, в конечном итоге разрушив назначение этого флага. Потому что, возможно, экземпляр моего сервера уже запущен и использует этот объект.
Pulseaudio, похоже, использует комбинацию цифр, чтобы объекты были различимы, и на него не влияет убийство с помощью -9, так что, похоже, есть способ.