Как новое приложение запускается на Mac? - PullRequest
0 голосов
/ 27 сентября 2011

Я ищу процесс и системный вызов, который отвечает за запуск каждого нового процесса на Mac.Я считаю, что это должно быть что-то вроде CreateProcess () и которое возвращает идентификатор процесса вновь созданного процесса. (Это предположение)

Мне интересны внутренние детали, такие как поток, отвечающий за запуск нового приложения.

Любая помощь приветствуется.Даже некоторые ссылки, за которыми нужно ухаживать, могут помочь.

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

OS X - это разновидность Unix.Новые процессы создаются с помощью системного вызова fork () .Это создает практически идентичную копию процесса, который делает вызов (разница в том, что fork возвращает 0 в дочернем элементе и pid дочернего в родительском).Тогда нормально использовать один из системных вызовов exec () в дочернем процессоре, чтобы преобразовать дочерний процесс в процесс, выполняющий другой исполняемый файл.

Edit

Так как вопрос помечен [Какао], я должен упомянуть, что есть класс Какао с именем NSTask , который охватывает вышеприведенное.

0 голосов
/ 14 октября 2011

Обычно в Mac OS X LaunchD является родителем всех процессов. Итак, LaunchD запускает их. Как?? Сначала это fork () , а затем posix_spawn () .

...