2012-05-17 130 views
0

我已經創建了一個命令行工具應用程序(Xocde-> New App-> Command line tool),它的運行沒有任何問題,現在我想通過終端運行它並通過一些命令行參數,像這樣如何在Mac應用程序中傳遞命令行參數

int main(int argc, const char * argv[]) 
{ 

    std::cout << "got "<<argc<<" arguments"; 

    for (int i = 0; i<argc;i++){ 
     std::cout << "argument:"<<i<<"= "<<argv[i]; 
    } 

//// some other piece of code 
} 

,如果我的終端

>open VisiMacXsltConverter --args fdafsdfasf i am getting output 

got 1 argumentsargument:0= /Applications/VisiMacXsltConverte 

我想通過命令行來知道什麼是傳遞參數的方式上鍵入

+0

可能需要遷移到超級用戶,並且是這樣的副本: http://superuser.com/questions/16750/how-can-i-run-an-application-with-command-line-arguments- in-mac-os – KingCronus

+0

@KingCronus我嘗試過:> AppName -P fdsfa fdsa但結果相同 – Amitg2k12

回答

1

爲什麼要與開放運行呢?

我會運行它(如果你有這本事$ PATH你應該忽略「./」):

./VisiMacXsltConverter arg1 arg2 arg3 arg4 

希望我沒有誤解你的問題。

2

如果只使用一個 - (連字符),那些值將進入易失性UserDefaults字典(也將覆蓋該進程的其他密鑰)。

./program -Param 4

int main(int argc, const char * argv[]) 
{ 

    @autoreleasepool { 
     NSLog(@"param = %@", [[NSUserDefaults standardUserDefaults] valueForKey:@"Param"]);   
    } 
    return 0; 
} 

或者你可以通過這些在怎麼過你要和使用,這將給你NSString的的一個NSArray以下。

[[NSProcessInfo processInfo] arguments]; 
相關問題