Вызов инструмента командной строки (bash
, ls
) через Process
работает, но, к сожалению, он создается как дочерний процесс.
Мне нужно запустить инструмент как отдельный процесс, не добавляя его в качестве подпроцесса в запущенное приложение.
Поэтому я попытался запустить отдельный процесс bash
, используя службы запуска с
let ws = NSWorkspace.shared
let url = URL(fileURLWithPath: "/bin/bash")
let app = try ws.launchApplication(at: url, options: [.default], configuration: [
.arguments: args,
.environment: env
])
К сожалению, звонок, похоже, ничего не делает, я думаю, он поддерживает только пакеты приложений? Как мне начать процесс, например, bash
, без создания дочернего процесса?
То, что я в основном пытаюсь сделать, - это создать кратковременный процесс, который выполняет одну вещь и немедленно завершает работу, не имея моего приложения в качестве родителя.
Одним из методов может быть создание вспомогательного инструмента, который fork
s запускает новый сеанс с setsid
и вызывает команду, но я бы предпочел не полагаться на внешний инструмент, а мой собственный процесс вне вопроса. Крайне важно, чтобы вызов выполнялся из процесса с ppid=1
.