2009-12-16 106 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呢。