Запуск приложения из другого процесса - PullRequest
3 голосов
/ 14 марта 2012

У нас есть приложение, которое мы создали как пакет, и мы хотим запустить его из другого процесса.

Как мы должны это сделать?Из того, что я понимаю, мы можем использовать openUrls (), openFile () или execve (), но я не знаю, какой из них лучше нам подходит.

Спасибо

Ответы [ 3 ]

1 голос
/ 07 апреля 2012

Поскольку вы говорите о приложении , вам не нужно проходить через механизмы сопоставления файлов.Они предназначены для открытия документов, изображений и т. Д. С соответствующим приложением.Поскольку вы, похоже, не знаете, о чем спрашивать, я бы сказал, что будьте проще:

Семейство exec* запускает исполняемый файл напрямую.Но обратите внимание, что заменяет процесс запуска запущенным приложением.Ваш лаунчер прекратит работу в этот момент.Если вы хотите, чтобы программа запуска продолжала работать, вы хотите использовать что-то, что запускает подпроцесс.Низкоуровневый способ - fork/vfork, за которым следует exec, но гораздо проще запустить ваше приложение с system, которое позаботится обо всем этом за кулисами.(Предполагая, что нет проблем с безопасностью для пользователей на другой стороне мира, внедряющих пути выполнения).

Если средство запуска не завершает работу, как только оно запускает ваше приложение, вам следует подумать о том, будет ли оно «блокироваться» до тех пор, пока не завершится запущенное приложение, или же оно запускает приложение асинхронно - так, чтобы онизатем запустить параллельно.Модуль запуска также может «дождаться» возвращаемого значения приложения, чтобы проверить, успешно ли оно выполнено, и, возможно, что-то сделать после этого.Есть способы сделать все это, но так как мы не знаем, что вам нужно, я не буду вдаваться в подробности.

Короче говоря: Если единственная работа вашей программы запускачтобы запустить приложение, используйте execl.Если вашей программе запуска требуется больше, используйте system.Если ни один из них не соответствует вашим потребностям, вам необходимо предоставить больше информации - начиная с языка, на котором написан ваш модуль запуска.

PS.Оба из них имеют преимущество универсальности и портативности.Они работают для приложений с графическим интерфейсом и командной строки, и они будут работать в любой Unix-подобной системе, и в некоторой степени в Windows.Нет необходимости запираться в Какао для чего-то такого простого.

0 голосов
/ 06 апреля 2012

Из документации OSX на NSWorkspaces :

  • openFile: Открывает указанный файл, указанный с использованием приложения по умолчанию, связанного с его типом.
  • openURL: Открывает местоположение по указанному URL.

С помощью url вы также можете открыть файл на ftp или http, например.

0 голосов
/ 01 апреля 2012

Если вы используете Какао, вы можете использовать NSWorkspace -launchApplication:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...