2

是否可以在 Objective-C 中进行系统调用?

我有以下代码:

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

如何获得输出?

谢谢

4

4 回答 4

8

这是使用-[NSFileManager contentsOfDirectoryAtPath:error:]而不是包装内置 shell 函数和解析输出的理想选择。对于需要输出的通用命令——并且在 Cocoa 中没有“免费”的等效功能(学习可用的 API 只需要时间)—— NSTask通常是比system().

于 2009-12-16T05:51:16.257 回答
6

你应该使用NSTask。如果您只需要 的结果ls,Cocoa 中有更合适的文件系统包装器。

于 2009-12-16T05:14:55.877 回答
4

如果你喜欢用 C 方式来做,你可以使用popen. 这也可用于读取输出。但是关于使用 Objective-C 解决方案的答案可能是更好的答案。

于 2009-12-16T05:57:46.853 回答
0

Objective-C 不会阻止程序调用system()或任何它的等价物。

CocoaTouch 可以。

于 2010-03-17T15:35:40.313 回答