我使用Xcode创建了命令行工具应用程序。 在该应用程序中,我使用NSWorkspace来启动另一个应用程序包(.app),如此处所示。 MacOsX: How to launch an application (.app) from a "Command Line Tool" type of appMacOsX:如果守护程序以根用户身份运行,从守护程序启动使用NSWorkspace的应用程序不起作用
所有似乎工作正常,直到我试图启动该命令行工具应用程序作为守护程序使用launchctl。 如果守护程序以当前登录的用户身份运行,那么命令行工具应用程序将启动外部应用程序。 如果守护程序以root身份运行,则命令行工具应用程序无法启动外部应用程序。 如果守护程序以root身份运行,使用NSWorkspace打开应用程序似乎不起作用。
有谁知道正确的方式来打开另一个应用程序从一个守护程序作为根运行?
谢谢迈克尔。你能告诉我如何在代码中获取当前登录用户的用户ID吗? – ytw 2013-04-02 21:35:39
检出[“'getuid()'”和“'geteuid()'”](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man2/getuid.2。 HTML)。 – 2013-04-03 01:06:34