這可能是一個愚蠢的問題,但是我如何從我的Cocoa應用程序執行shell命令?可可/ Objective-C Shell命令行執行
我有一個命令作爲字符串「命令」,但可以根據需要輕鬆操作數據。
沒有必要獲得返回的輸出值。
這可能是一個愚蠢的問題,但是我如何從我的Cocoa應用程序執行shell命令?可可/ Objective-C Shell命令行執行
我有一個命令作爲字符串「命令」,但可以根據需要輕鬆操作數據。
沒有必要獲得返回的輸出值。
NSTask很容易做到這一點。對於同步調用,您可以用這樣的片段:
NSString *path = @"/path/to/executable";
NSArray *args = [NSArray arrayWithObjects:..., nil];
[[NSTask launchedTaskWithLaunchPath:path arguments:args] waitUntilExit];
的-waitUntilExit
調用確保它繼續之前完成。如果任務可以是異步的,您可以刪除該呼叫,只需讓NSTask執行該操作即可。
使用NSTask類,程序可以運行另一個程序作爲子進程,並可以監視程序的執行。
如果你只是想運行的東西,不關心輸出或返回代碼(例如,你想觸摸的文件),你可以做
system("touch myfile.txt");
易爲。
對'system'和'popen'非常非常小心。通過讓角色穿過它認爲特別的shell來引入漏洞很容易。 NSTask和'fork' /'exec'更安全。 – 2009-09-25 03:29:52
可能的重複[從Cocoa應用程序執行終端命令](http://stackoverflow.com/questions/412562/execute-a-terminal-command-from-a-cocoa-app) – outis 2012-06-23 20:01:08
也看到這個問題:http://stackoverflow.com/questions/412562/execute-a-terminal-command-from-a-cocoa-app/696942#696942 – kent 2009-09-25 12:40:35