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