Как завершить процесс перед выходом? - PullRequest
0 голосов
/ 06 января 2019

Я новичок в Swift, поэтому, чтобы узнать, что я пытаюсь создать ключ командной строки, в коде я запускаю сервер узлов, используя Process. Проблема здесь в том, что когда я выхожу из программы, процесс узла все еще выполняется, и я хочу завершить его всякий раз, когда я выхожу из программы или когда я собираюсь выйти из программы.

import Foundation

let port = "3030"

let process = Process.launchedProcess(launchPath: "/usr/local/bin/node", arguments: ["/path/to/file/index.js"])
print(process.processIdentifier)

Я узнал, как получить PID процесса, но я не знаю, как его убить при выходе или когда я собираюсь выйти.

Редактировать

process.terminate() работает, но я хочу, чтобы программа продолжала работать до тех пор, пока она не будет уничтожена вручную (ctrl + c), убив тем самым процесс узла. Я могу сохранить работоспособность программы, используя waitUntilExit(), однако, использование terminate() не будет работать, если я использую waitUntilExit().

1 Ответ

0 голосов
/ 15 января 2019

Как этот ответ предлагает:

import Foundation

// Start the Node process...

signal(SIGINT, SIG_IGN)

let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: .main)
sigintSource.setEventHandler {
    process.terminate() // Terminate the Node process
    exit(0)
}
sigintSource.resume()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...