如何在Mac上启动新应用程序?

时间:2011-09-27 11:49:00

标签: macos cocoa process system macos-carbon

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

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

感谢任何帮助。甚至一些照顾的参考可能会有所帮助。

2 个答案:

答案 0 :(得分:1)

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

修改

由于问题被标记为[Cocoa],我应该提到有一个名为NSTask的Cocoa类包含了上述内容。

答案 1 :(得分:0)

通常在Mac OS X上,LaunchD是所有进程的父级。因此,LaunchD正在推出它们。怎么样??先是fork(),然后是posix_spawn()