You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift使用Process执行命令行报NSPOSIXErrorDomain Code=13权限错误如何解决

问题根因
  • 你把Process的launchPath和参数逻辑完全写反了:
    • launchPath需要指向你要执行的可执行文件的绝对路径,你现在填的是TestFolder这个目录路径,目录本身没有可执行权限,所以直接触发13权限错误
    • arguments是传给可执行文件的参数,你要执行ls查看该目录内容,应该把ls的路径填到launchPath,目录路径作为参数传入
修复后代码示例
let task = Process()
// macOS 系统 ls 命令默认路径为 /bin/ls,填到 launchPath
task.launchPath = "/bin/ls"
// 要查询的目录作为参数传给 ls
task.arguments = ["/Users/donghanhu/Documents/TestFolder"]

// 可选配置:如果需要获取命令输出可以添加管道
let outputPipe = Pipe()
task.standardOutput = outputPipe

do {
    try task.run()
    task.waitUntilExit()
    
    // 读取输出的可选代码
    let outputData = outputPipe.fileHandleForReading.readDataToEndOfFile()
    if let result = String(data: outputData, encoding: .utf8) {
        print("命令执行结果:\n\(result)")
    }
} catch {
    print("执行出错,错误:\(error)")
}
额外注意事项(如果需要执行自定义可执行文件)

如果你要运行的是TestFolder目录下的自定义脚本/二进制文件,需要补充以下配置:

  1. launchPath要指向可执行文件本身的完整路径,例如/Users/donghanhu/Documents/TestFolder/my_executable
  2. 给自定义可执行文件添加执行权限:终端执行chmod +x 你的可执行文件完整路径
  3. 确认沙箱关闭生效:在Xcode项目的「Signing & Capabilities」标签页,完全取消「App Sandbox」的勾选,不要仅修改配置文件
  4. macOS 10.15及以上系统需要确认应用有对应目录的访问权限,可以在「系统设置→隐私与安全性→完全磁盘访问权限」中给你的应用授权

内容的提问来源于stack exchange,提问作者Han

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:54:02