2011-09-27 72 views
0

我正在寻找进程&系统调用,它负责启动Mac上的每个新进程。 我相信它应该是这样的CreateProcess(),并返回新创建的进程的进程ID。(这是猜测)如何在Mac上启动新应用程序?

我很感兴趣,像负责启动新的应用程序流内部细节。

任何帮助表示赞赏。甚至一些参考照顾可能会有所帮助。

回答

0

通常在Mac OS X上LaunchD是所有进程的父代。所以,LaunchD正在启动它们。怎么样??首先是fork(),然后是posix_spawn()

1

OS X是各种Unix。系统调用fork()创建新进程。这会创建一个几乎完全相同的进行调用的副本(不同之处在于fork在父级中返回0,在父级中返回子级的pid)。然后在孩子中使用其中一个exec()系统调用来将孩子转换为运行不同可执行文件的进程是正常的。

编辑

由于议题被标记[可可],我应该提到有称为NSTask可可类,它包装以上。

+0

你有什么想法哪个进程负责分叉然后执行? – MacGeek

+0

@MachinTosh:任何进程都可以执行fork/exec。 – JeremyP

+0

我知道任何进程都可以fork/exec。但我有兴趣找出像dock,terminal,itunes这样的所有应用程序的共同点。哪个流程分叉并启动它们? – MacGeek

相关问题