如何在Swift Cocao应用程序中销毁正在运行的进程

时间:2018-08-03 16:37:13

标签: swift macos google-chrome cocoa process

我有一个带有URL模式处理程序的Cocoa应用程序。它在一个进程中运行节点服务器(node server.js)。服务器启动后,我将在默认浏览器中打开一个选项卡。触发几下后,Chrome浏览器崩溃。

我用于启动过程和打开浏览器的代码

    let command = cd + " && " + "export PATH=/usr/local/share/npm/bin:/usr/local/bin:/usr/local/sbin:~/bin:$PATH && node server.js"
    let out = shell(command)

func shell(_ command: String) -> String {

    let terminal = Process()
    terminal.launchPath = "/usr/bin/env"
    terminal.arguments = ["bash", "-c", command]
    let pipe = Pipe()
    terminal.standardOutput = pipe


    terminal.launch()


    openUrl()

    return ""
}

func openUrl(){
    print("open url called")
        if let url = URL(string: "https://my.domain.com"),
            NSWorkspace.shared.open(url) {
            print("default browser was successfully opened")

        }

}

我没有使用Swift或类似语言的经验。 我假设每次let terminal = Process()都会创建一个新进程。 浏览器变得超载并崩溃,因为创建了越来越多的进程。 现在,如果我想删除或类似ctrl + c的openUrl方法中的进程,我该如何实现。我尝试了terminal.terminate()。它立即使浏览器崩溃。我最大的困惑是,为什么浏览器会因为应用程序而受到影响

0 个答案:

没有答案