我有一个在OS X中运行的应用程序需要使用GUI启动另一个可执行文件,然后关闭自己,使其他GUI完好无损。
现在我用 fork 然后 execve 启动其他可执行文件并关闭启动它的应用程序,但是新的可执行文件保留了应用程序中的菜单栏关闭。这使我无法运行原始应用程序,直到我关闭可执行文件的窗口。
我发现的唯一一件事是人们说使用 nohup ,但据我所知,只是在父母关闭时才停止关闭程序?
编辑:在第一个答案中查看函数后,我意识到我应该包含更多细节。我使用的是OS X 10.8,似乎已经弃用了很多文件管理器API。另一个重要细节是我需要将命令行参数传递给可执行文件。
答案 0 :(得分:2)
Cocoa方式是-[NSWorkspace launchApplication:]
。在略低的水平,但仍然高于BSD,有LSOpenApplication
。
答案 1 :(得分:0)
事实证明,我尝试启动的可执行文件(最初是在另一个应用程序包中)正在使用 plist 文件来启动可执行文件的应用程序。我在Contents / MacOS文件夹中有可执行文件,其中存在原始应用程序的可执行文件。将其他可执行文件放入自己的应用程序包后,我可以在其自己的程序包中的可执行文件上使用 fork 和 execve 来正确启动它。