xcode 6 swift system() 命令

2023-11-30

有没有关于 swift 系统命令的详细描述?例如,这段代码

    let x = system("ls -l `which which`")
    println(x)

产生 -rwxr-xr-x 1 根轮 14496 八月 30 04:29 /usr/bin/which

0

我想将输出与返回码


system()不是 Swift 命令,而是 BSD 库函数。你得到文档 和“人系统”在终端窗口中:

system() 函数将参数命令传递给命令 解释器 sh(1)。调用过程 等待 shell 完成执行命令,忽略 SIGINT 和 SIGQUIT,并阻止 SIGCHLD。

“ls”命令的输出仅写入标准输出,而不写入任何 斯威夫特变量。

如果您需要更多控制,那么您必须使用NSTask来自基金会框架。 这是一个简单的例子:

let task = NSTask()
task.launchPath = "/bin/sh"
task.arguments = ["-c", "ls -l `which which`"]

let pipe = NSPipe()
task.standardOutput = pipe
task.launch()

let data = pipe.fileHandleForReading.readDataToEndOfFile()
if let output = NSString(data: data, encoding: NSUTF8StringEncoding) {
    println(output)
}

task.waitUntilExit()
let status = task.terminationStatus
println(status)

这里需要通过 shell“/bin/sh -c command ...”执行命令,因为 “反勾号”参数。一般来说,最好直接调用命令, 例如:

task.launchPath = "/bin/ls"
task.arguments = ["-l", "/tmp"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xcode 6 swift system() 命令 的相关文章

随机推荐