C++ 如何从已经运行的GUI应用程序中启动带有GUI的可执行文件

C++ 如何从已经运行的GUI应用程序中启动带有GUI的可执行文件,c++,macos,osx-mountain-lion,C++,Macos,Osx Mountain Lion,我有一个在OSX中运行的应用程序,它需要启动另一个带有GUI的可执行文件,然后关闭自己,使另一个GUI保持不变 现在,我正在使用fork启动另一个可执行文件,然后使用execve关闭启动它的应用程序,但新的可执行文件保留了刚刚关闭的应用程序的菜单栏。这会阻止我运行原始应用程序,直到我关闭可执行文件的窗口 我发现的唯一一件事是人们说使用nohup,但据我所知,当父程序关闭时,它会阻止程序关闭吗 编辑:在查看了第一个答案中的函数后,我意识到我应该包含更多的细节。我使用的是OSX10.8,它似乎已经弃

我有一个在OSX中运行的应用程序,它需要启动另一个带有GUI的可执行文件,然后关闭自己,使另一个GUI保持不变

现在,我正在使用fork启动另一个可执行文件,然后使用execve关闭启动它的应用程序,但新的可执行文件保留了刚刚关闭的应用程序的菜单栏。这会阻止我运行原始应用程序,直到我关闭可执行文件的窗口

我发现的唯一一件事是人们说使用nohup,但据我所知,当父程序关闭时,它会阻止程序关闭吗


编辑:在查看了第一个答案中的函数后,我意识到我应该包含更多的细节。我使用的是OSX10.8,它似乎已经弃用了很多文件管理器API。另一个重要的细节是,我需要将命令行参数传递给可执行文件。

方法是
-[NSWorkspace launchApplication:][/code>。在稍微低一点的级别,但仍然远高于BSD,有
LSOpenApplication

,事实证明,我尝试启动的可执行文件(最初在另一个应用程序包中)使用了启动可执行文件的应用程序的plist文件。我把可执行文件放在Contents/MacOS文件夹中,原始应用程序的可执行文件就在那里。在将另一个可执行文件放入其自己的应用程序包后,我能够在其自己的包中的可执行文件上使用forkexecve,以正确启动它