对快速系统命令有很好的描述吗?例如,这段代码
let x = system("ls -l `which which`")
println(x)
生产-rwxr-xr-x1根轮14496 8月30日04:29 /usr/bin/
我想将输出与分离--返回代码
发布于 2014-10-16 09:19:50
system()
不是Swift命令,而是BSD库函数。您可以在终端窗口中获得带有"man system"的文档:
system()函数将参数命令交给命令解释器sh(1)。调用进程等待shell完成命令的执行,忽略SIGINT和SIGQUIT,并阻塞SIGCHLD。
"ls“命令的输出只是写入标准输出,而不是任何Swift变量。
如果您需要更多的控制,那么您必须使用来自基础框架的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命令执行该命令.“在这里是必要的,因为“反滴答”的论点。通常,最好直接调用命令,例如:
task.launchPath = "/bin/ls"
task.arguments = ["-l", "/tmp"]
https://stackoverflow.com/questions/26399301
复制相似问题