我正在尝试使用 shell 脚本打开 Ngrok 或 Localtunnel 作为我的 swift 程序的一部分。问题是两个 shell 脚本都没有返回,我的主线程挂起。我可以把它放在一个永久打开的侧线程中,但我需要提取输出的 url。有任何想法吗?
作为参考,这是我在 swift 中执行 shell 命令的方式。
func shell(_ command: String) -> String {
let task = Process()
let pipe = Pipe()
task.standardOutput = pipe
task.standardError = pipe
task.arguments = ["-c", command]
task.launchPath = "/bin/zsh"
task.launch()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output = String(data: data, encoding: .utf8)!
return output
}
其次是
shell("ngrok http 3000")
或者
shell("lt --port 9726")