2012-03-14 85 views
3

我們有一個應用程序,我們已經構建爲一個包,我們希望從另一個進程啓動它。從另一個進程啓動應用程序

我們應該怎麼做? (),openFile()或execve() 但我不知道哪一個更適合我們。

感謝

+1

如果沒有賞金,我會投票結束。你的問題非常模糊 - 我們應該如何知道哪一個更適合你?您沒有提供任何關於您的要求的信息,以及爲什麼您在提到的3中有任何問題。 – 2012-04-06 06:19:24

回答

1

由於您在談論的是應用程序,因此您不想通過文件關聯機制。他們用於打開文件,圖像等與適當的應用程序。既然你似乎不確定要問什麼,我會說保持簡單:

exec*家庭直接啓動一個可執行文件。但請注意,取代了啓動程序的啓動程序。您的啓動器將在該點停止執行。如果你想讓啓動器繼續運行,你想使用啓動子進程的東西。低級別的方法是fork/vfork,然後是exec,但使用system啓動應用程序要簡單得多,該應用程序負責處理幕後的所有操作。 (假設在注入執行路徑的世界另一端用戶沒有安全問題)。

如果啓動程序在啓動應用程序後不立即終止,則需要考慮在啓動的應用程序終止之前是否「阻止」,或者它是否異步啓動應用程序 - 以便它們運行在平行下。啓動器也可能會「等待」應用程序的返回值,以檢查它是否成功,並可能在事後做些事情。有辦法可以做到這一點,但由於我們不知道你需要什麼,所以我不會詳細討論。

總之:如果您的啓動程序的唯一工作是啓動您的應用程序,請使用execl。如果您的啓動器需要更多操作,請使用system。如果兩者都無法滿足您的需求,您需要提供更多信息 - 從您的啓動器寫入的語言開始。

PS。這兩者都具有通用性和便攜性的優點。他們爲GUI和命令行應用程序工作,他們可以在任何類Unix系統上工作,在某種程度上可以在Windows上工作。沒有必要把自己鎖定在可可這個簡單的東西上。

0

如果您使用可可,你可以使用NSWorkspace-launchApplication:

+1

但是哪種方式最適合我們?應該考慮什麼? – kambi 2012-04-02 07:42:14

+0

你是什麼意思?只需使用這種方法... – edc1591 2012-04-02 12:13:58

0

從OSX文檔上NSWorkspaces

  • 中openFile:打開使用與其類型關聯的默認應用程序指定的文件中指定。
  • openURL:打開指定URL處的位置。

使用URL你也可以打開FTP文件,或http例如。

相關問題