2009-12-16 109 views
2

是否可以在Objective-C中進行系統調用?Unix系統調用Objective-C

我有以下代碼:

if (!system("ls -l")) { 
    NSLog(@"Successfully executed"); 
} else { 
     NSLog(@"Error while executing the command"); 
} 

如何獲得輸出?

謝謝

回答

8

這是使用-[NSFileManager contentsOfDirectoryAtPath:error:]而不是包裝內置shell函數並解析輸出的完美人選。對於需要輸出的通用命令,以及Cocoa中沒有「免費」等效功能的地方(只需花時間學習可用的API),NSTask通常是比system()更好的選擇。

6

您應該使用NSTask。如果你只需要ls的結果,Cocoa中有更合適的文件系統包裝器。

4

如果你喜歡做C的方式,你可以使用popen。這也可以用來讀取輸出。但關於使用Objective-C解決方案的答案可能是更好的答案。

0

Objective-C不會阻止程序調用system()或其任何等價物。

CocoaTouch呢。