2011-01-14 52 views
3

我是新來的所有這些,我想請原諒我的無知..終端中的「./」和「open」有什麼區別,以及如何從XCode運行Unix可執行文件?

我有一個unix可執行文件。我運行終端命令:打開程序名--args參數,它響應無法找到資源文件(這是我通過的參數。)

我嘗試通過編寫:./programname參數和有用。

首先,我想知道這兩種方法之間的區別,以及爲什麼第一個方法不起作用,而第二個方法起作用。

我現在的問題是我不能在XCode中完成它。當一個可執行文件運行時,它說它找不到資源文件。我將cmd + i的可執行參數傳遞給可執行文件,並將資源文件添加爲參數。

謝謝您的潛在答案..

回答

2

open相當於雙擊Finder中的某個東西。因此,如果您在UNIX可執行文件上使用它,那麼可執行文件將啓動,但當前工作目錄不會位於可執行文件所在的位置,不一定非常有用。但是,您也可以使用它打開.doc文件或任何其他文件類型,在Finder中打開目錄,在查找程序中打開URL等。

使用./name啓動可執行文件是正常的UNIX方式來運行這個東西。當你輸入它時,當前的工作目錄將在任何地方。因此,這將與可執行文件所在的目錄相同(除非您從磁盤上的其他位置啓動,例如通過下載目錄並使用../name啓動可執行文件)。

你可能想要做的是編寫代碼來獲取可執行文件的路徑,並尋找與之相關的指定文件?你不會說你正在使用什麼語言,煩人的是這不是POSIX規範中的內容,所以它在OS和OS之間有所不同。

如果在C或任何可以調用C(所以,C++,Objective-C的,等等),那麼NSGetExecutablePath是(忽略谷歌的願望在前面加上一個下劃線,例如見this site)是很可能是你想要。如果你在Objective-C中,那麼NSString有一些自動附加路徑的方法。

+0

謝謝您的及時答覆!我正在使用C++。我創建了一個「新目標」,我已經設置了makefile文件夾,我已經激活了新的目標,現在我想要「構建並運行」來運行我的程序,但是使用unix方式。我可以從項目設置中進行設置嗎?我不在哪裏可以放NSGetExecutablePath我很抱歉.. – user575988 2011-01-14 20:13:03

1

「開放」是作品完全一樣,如果你已經通過搜索瀏覽到一個特定的應用程序,然後雙擊它的命令。

./是一種運行通過chmod標記爲可執行文件的特定文件的方式。

例如,您可以通過輸入「open /Applications/MyApp.app/」從命令行運行Mac OS X應用程序。但是如果你這樣做的話,它將不起作用./MyApp.app/(假設你在/ Applications目錄中)。

如果您在終端中鍵入「man open」,您可以在此閱讀更多詳細信息。

相關問題