是否可以在Objective-C中進行系統調用?Unix系統調用Objective-C
我有以下代碼:
if (!system("ls -l")) {
NSLog(@"Successfully executed");
} else {
NSLog(@"Error while executing the command");
}
如何獲得輸出?
謝謝
是否可以在Objective-C中進行系統調用?Unix系統調用Objective-C
我有以下代碼:
if (!system("ls -l")) {
NSLog(@"Successfully executed");
} else {
NSLog(@"Error while executing the command");
}
如何獲得輸出?
謝謝
這是使用-[NSFileManager contentsOfDirectoryAtPath:error:]
而不是包裝內置shell函數並解析輸出的完美人選。對於需要輸出的通用命令,以及Cocoa中沒有「免費」等效功能的地方(只需花時間學習可用的API),NSTask通常是比system()
更好的選擇。
您應該使用NSTask。如果你只需要ls
的結果,Cocoa中有更合適的文件系統包裝器。
如果你喜歡做C的方式,你可以使用popen
。這也可以用來讀取輸出。但關於使用Objective-C解決方案的答案可能是更好的答案。
Objective-C不會阻止程序調用system()
或其任何等價物。
CocoaTouch呢。