【问题标题】:Unix System Call in Objective-CObjective-C 中的 Unix 系统调用
【发布时间】:2009-12-16 05:12:18
【问题描述】:

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

我有以下代码:

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

如何获得输出?

谢谢

【问题讨论】:

    标签: objective-c unix system-calls


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          Objective-C 不会阻止程序调用 system() 或其任何等效项。

          CocoaTouch 可以。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-05
            • 2015-09-24
            • 1970-01-01
            • 2011-06-13
            • 2023-04-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多