Как запустить исполняемый файл с графическим интерфейсом из уже запущенного приложения с графическим интерфейсом

У меня есть приложение, работающее в OS X, которому необходимо запустить другой исполняемый файл с графическим интерфейсом, а затем закрыть себя, оставив этот другой графический интерфейс нетронутым.

Прямо сейчас я запускаю другой исполняемый файл с помощью fork, затем execve и закрываю приложение, которое его запустило, но новый исполняемый файл сохраняет строку меню только что закрытого приложения. Это мешает мне запустить исходное приложение, пока я не закрою окно для исполняемого файла.

Единственное, что я нашел, это то, что люди говорят использовать nohup, но насколько я понимаю, это просто останавливает закрытие программы при закрытии родителя?

EDIT: изучив функции в первом ответе, я понял, что должен был включить некоторые подробности. Я использую OS X 10.8, которая, похоже, устарела во многих API файлового менеджера. Еще одна важная деталь заключается в том, что мне нужно передать аргументы командной строки исполняемому файлу.


person Frongo    schedule 20.12.2012    source источник


Ответы (2)


Путь какао будет -[NSWorkspace launchApplication:]. На несколько более низком уровне, но все же намного выше BSD, есть LSOpenApplication.

person JWWalker    schedule 20.12.2012

Как оказалось, мой исполняемый файл, который я пытался запустить и который изначально находился в другом пакете приложения, использовал файл plist для приложения, которое запускало исполняемый файл. У меня был исполняемый файл в папке Contents/MacOS, где находился исполняемый файл исходного приложения. Поместив другой исполняемый файл в его собственный пакет приложения, я смог использовать fork и execve для исполняемого файла в его собственном пакете, чтобы правильно запустить его.

person Frongo    schedule 23.12.2012