У меня есть приложение, работающее в OS X, которое должно запустить другой исполняемый файл с графическим интерфейсом, а затем закрыть себя, оставив этот другой графический интерфейс без изменений.
Прямо сейчас я запускаю другой исполняемый файл с вилка затем execve и закрытие приложения, которое запустило его, но новый исполняемый файл удерживает строку меню от приложения, которое только что закрылось. Это мешает мне запустить оригинальное приложение, пока я не закрою окно для исполняемого файла.
Единственное, что я нашел, это люди, которые говорят, что нужно использовать поЬир но из того, что я понимаю, что просто останавливает закрытие программы при закрытии родителя?
РЕДАКТИРОВАТЬИзучив функции в первом ответе, я понял, что должен был включить некоторые подробности. Я использую OS X 10.8, которая, кажется, устарела во многом API файлового менеджера. Еще одна важная деталь — мне нужно передать аргументы командной строки в исполняемый файл.
Какао путь будет -[NSWorkspace launchApplication:]
, На немного более низком уровне, но все еще намного выше BSD, есть LSOpenApplication
,
Как оказалось, мой исполняемый файл, который я пытался запустить, который изначально был в другом пакете приложения, использовал PLIST файл для приложения, запускающего исполняемый файл. У меня был исполняемый файл в папке Contents / MacOS, где находился исполняемый файл для исходного приложения. Поместив другой исполняемый файл в собственный пакет приложения, я смог использовать вилка а также execve на исполняемый файл в своем собственном пакете, чтобы правильно запустить его.