Существуют и другие API для запуска приложений, но в конечном итоге все они зависят от fork()/exec()
. В UNIX нет другого способа запустить новый процесс из пользовательского пространства, кроме как создать существующий процесс. Вы можете установить другое задание как задание launchd
, а затем запустить его, выполнив его условия запуска - при этом напрямую не используется fork()
(хотя, конечно, это приводит к разветвлению launchd
).