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