Mac OS X中利用Swift执行命令行并获取执行结果

本人深夜研究所得,转载请注明原作者

我们有时候会在终端中输入命令行并获取相应的结果,例如下述命令可以获取Mac机硬件信息:

system_profiler SPHardwareDataType

同样也可以在Swift程序中利用该命令行获取程序运行主机的硬件信息,具体代码可参考如下(已封装成函数,可直接调用)

/// 执行命令行
/// - parameter launchPath: 命令行启动路径
/// - parameter arguments: 命令行参数
/// returns: 命令行执行结果
static func runCommand(launchPath: String, arguments: [String]) -> String {
    let pipe = NSPipe()
    let file = pipe.fileHandleForReading
    
    let task = NSTask()
    task.launchPath = launchPath
    task.arguments = arguments
    task.standardOutput = pipe
    task.launch()
    
    let data = file.readDataToEndOfFile()
    return String(data: data, encoding: NSUTF8StringEncoding)!
}

调用方式非常简单,例如:

let s = runCommand("/usr/sbin/system_profiler", arguments: ["SPHardwareDataType"])
print(s)

执行结果如下图所示(已进行信息保护)

Mac OS X中利用Swift执行命令行并获取执行结果_第1张图片


本文首次发布于,希望对读者有帮助。

你可能感兴趣的:(Mac OS X中利用Swift执行命令行并获取执行结果)