До сих пор я нашел два возможных решения, также с помощью комментариев к моему вопросу:
1.) "Правильный путь" - с помощью приложения завершить обратный вызов
Объект Process
можно сделать глобальным / экземпляром, чтобы убить его в обратном вызове applicationWillTerminate
. Но я столкнулся с проблемой, что эта функция никогда не вызывается. С помощью этого вопроса на форуме я обнаружил, что вам нужно установить следующие два параметра в "NO" в Info.plist
:
Тогда все работает отлично.
2.) Пусть дочерний процесс наблюдает за родителем
Можно очень легко получить pid родителя (ProcessInfo().processIdentifier
) передайте его в качестве параметра при запуске потомка и дайте ребенку посмотреть идентификатор родительского процесса - когда он больше не существует, ребенок может убить себя. Можно наблюдать за процессом, запустив kill -0 PID
, что приведет к ошибке, если процесс не существует.