在主函數體中,我需要調用系統(RELATIVE_PATH + /MyShellScript.sh)。腳本和其他相關的東西駐留在主項目包中。如何獲得相對路徑?恕我直言,它應該是可以從主要參數提取它 - 「的char * argv的[]」 ...如何獲得可可程序運行的路徑?
0
A
回答
0
int main (int argc, const char * argv[])
{
NSLog(@"%s", argv[0]);
return 0;
}
輸出
2012-01-24 21:33:22.015 CLIXMPLParser[13042:707] /Users/zrxq/Library/Developer/Xcode/DerivedData/CLIXMPLParser-dsibnvwgoqvjnvbhlxkyzcojqnwr/Build/Products/Debug/CLIXMPLParser
4
究竟是你想做些什麼?你的shell腳本是做什麼的,你爲什麼從main()
打電話給它?您通常不需要修改Cocoa應用程序中的main()
函數。
一般來說,你應該避免使用shell腳本,除非絕對必要,但如果你要那麼你應該創建一個NSTask
對象,並用它來執行你的腳本。如果你想在啓動運行它,你應該把你的代碼來啓動應用程序委託的applicationDidFinishLaunching:
方法腳本。
可以使用的NSBundle
各種方法讓您的應用程序的包裏面的路徑資源:
NSString* path = [[NSBundle mainBundle] pathForResource:@"MyShellScript" ofType:@"sh"];
+0
你看,我已經下載了Oracle JDeveloper工具(包含在其內的文件夾和java文件的文件夾),然而,這些工具運行雖然在一些2級文件夾一些shell腳本。所以,我很好奇如何在jdeveloper上創建一個「包裝器」,只是想創建.app包,爲了方便起見。目前,我能夠運行腳本和JDeveloper從預定義的位置,所以需要知道如何通過一個相對路徑system()調用。 – Centurion
相關問題
- 1. 如何獲得運行java程序的路徑
- 2. 如何從許可流程(UAC)獲得流程路徑或pid
- 3. 如何設置可執行IE 11驅動程序的路徑
- 4. 如何獲取運行時Web應用程序路徑?
- 5. 如何獲得它正在運行的servlet的確切路徑?
- 6. 如何獲得路徑正在執行
- 7. 如何獲得KVO的可觀察關鍵路徑列表?
- 8. 如何在Rails 5中獲得可掛載的引擎路徑?
- 9. OS X如何獲取應用程序的基本路徑,超出可執行的完整路徑
- 10. 可執行路徑
- 11. 可運行JAR:本地路徑問題
- 12. 運行ASP.NET應用程序的路徑
- 13. 旅行商:獲得所有可能的路徑使用遞歸
- 14. 如何使用外部類路徑執行可運行jar?
- 15. 如何獲得程序的EXE文件的路徑
- 16. c#如何獲得我的程序的安裝路徑?
- 17. 如何在Vim之外獲得Vim運行時間路徑
- 18. 如何在iPhone上獲得可寫路徑?
- 19. 如何獲得安裝程序類中安裝MSI的路徑
- 20. 如何獲得wcf應用程序的工作路徑?
- 21. 如何在linux中獲得程序的完整路徑?
- 22. 任務管理器如何獲取進程的命令行可執行路徑?
- 23. 運行cmd程序需要路徑
- 24. 如何獲得路徑軌道路線
- 25. C#:如何獲得Process.Start在給定文件時沒有路徑時將使用的可執行文件路徑?
- 26. 可能獲得Type對象的類路徑嗎? (例如com.test.xyz.CLASSNAME)
- 27. 如何從可運行jar文件這是在構建路徑
- 28. 如何更改程序運行的路徑?
- 29. 如何檢查應用程序運行的路徑?
- 30. 如何從Linux中的不同路徑運行python程序
雖然'argv的[0]'*可能*包含路徑到您的應用程序,我不相信有是任何保證它將 - 底層API中的路徑和'的argv [0]'是不同的參數,並且可以是不同的(這個功能實際上是使用某些程序,以確定它們的行爲 - 測試'的argv [0]'用於不同的值)。可可的正確答案是在Rob Keniger的回答中使用'NSBundle'。 – CRD
@CRD是對的; 'argv [0]'包含調用可執行文件的名字,這不一定和它的完整路徑相同。 –