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