如何启动外部流程?

doo*_*om4 5 macos process swift

我正在阅读swift的文档并遇到了类型方法.例如:https://developer.apple.com/documentation/foundation/process

提供的类型方法是:

class func run(URL, arguments: [String], terminationHandler: ((Process) -> Void)? = nil)

我如何在我的代码中使用它?例如,当我按下按钮?如何向terminationHandler添加清理功能?

And*_*ini 8

macos应用程序中,您可以run用于启动外部进程,例如:

1)一次性执行:

let url = URL(fileURLWithPath:"/bin/ls")
do {
   try Process.run(url, arguments: []) { (process) in
      print("\ndidFinish: \(!process.isRunning)")
   }
} catch {}
Run Code Online (Sandbox Code Playgroud)

2)您可能希望使用Process实例来更舒适地设置其行为,这样做:

let process = Process()
process.executableURL = URL(fileURLWithPath:"/bin/ls")
process.arguments = ["-la"]
process.terminationHandler = { (process) in
   print("\ndidFinish: \(!process.isRunning)")
}
do {
  try process.run()
} catch {}
Run Code Online (Sandbox Code Playgroud)

所以我确实启动了ls命令(你可以检查你的控制台的结果),然后在关闭terminationHandler我回来这样的过程.