首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >xcode 6快速系统()命令

xcode 6快速系统()命令
EN

Stack Overflow用户
提问于 2014-10-16 08:09:31
回答 1查看 4.4K关注 0票数 5

对快速系统命令有很好的描述吗?例如,这段代码

代码语言:javascript
运行
复制
    let x = system("ls -l `which which`")
    println(x)

生产-rwxr-xr-x1根轮14496 8月30日04:29 /usr/bin/

我想将输出与分离--返回代码

EN

回答 1

Stack Overflow用户

发布于 2014-10-16 09:19:50

system()不是Swift命令,而是BSD库函数。您可以在终端窗口中获得带有"man system"的文档:

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

"ls“命令的输出只是写入标准输出,而不是任何Swift变量。

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

代码语言:javascript
运行
复制
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命令执行该命令.“在这里是必要的,因为“反滴答”的论点。通常,最好直接调用命令,例如:

代码语言:javascript
运行
复制
task.launchPath = "/bin/ls"
task.arguments = ["-l", "/tmp"]
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26399301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档