尝试使用/bin/sh
as executableURL
反而:
task.executableURL = URL(fileURLWithPath: "/bin/sh")
应该可以做到这一点。
您可能还想尝试使用task.run()
相反,并等待完成:
try task.run()
task.waitUntilExit()
我编写了 System 来使这变得更容易。请随意使用它或复制/粘贴代码:https://github.com/eneko/System/blob/master/Sources/System/System.swift#L107 https://github.com/eneko/System/blob/master/Sources/System/System.swift#L107
更新了附加信息
由于您正在尝试打开 macOS 应用程序,因此无需使用sh
or bash
,你可以调用open
直接地。
为了测试这一点,我在 Xcode 中编写了一个示例 macOS 应用程序,它所做的只是在屏幕上显示参数。然后,我继续从 macOS Playground 启动该应用程序,如屏幕截图所示:
以下是使用参数启动应用程序的代码:
let process = Process()
process.executableURL = URL(fileURLWithPath: "/usr/bin/open")
process.arguments = [
"/Applications/ArgumentTest/ArgumentTest.app",
"-n",
"--args",
"Open",
"From",
"Playground"
]
try process.run()
-n
用于启动应用程序的实例,即使应用程序已经在运行。您的情况可能不需要。
希望这可以帮助!