Обычно пакет приложений на OS X можно запустить только один раз, однако просто скопировав комплект, одно и то же приложение можно запустить дважды. Какова лучшая стратегия для обнаружения и прекращения этой возможности?Как определить, уже запущено ли приложение OS X
В Windows этот эффект может быть достигнут приложением, создающим именованный ресурс при запуске, а затем завершение, если именованный ресурс не может быть создан, указывая на то, что выполняется другой процесс, который уже создал тот же ресурс. Эти ресурсы выпускаются надежным способом в Windows, когда приложение завершает работу.
Проблема, которую я видел при изучении этого, заключается в том, что API-интерфейсы OS X сохраняют состояние в файловой системе и, таким образом, делают стратегию, используемую в Windows ненадежной, т.е. затяжные файлы после неправильного выхода могут ложно указывать, что приложение уже Бег.
API, которые я могу использовать для достижения такого же эффекта на OS X: posix, carbon и boost.
Идеи?
Почему вы даже хотите это сделать? В отличие от Windows, операционная система заботится о том, чтобы предотвратить запуск нескольких экземпляров приложения в общем случае. В необычном случае, зачем это мешать? –
Данное приложение является игрой. Запустив несколько копий игры на одной машине, игрок будет иметь несправедливое преимущество перед другими игроками в некоторых ситуациях. –