Как сохранить дочерний процесс живым, даже если родительский процесс завершен - PullRequest
1 голос
/ 20 апреля 2020

У меня есть приложение Electron, и мне нужно запустить exe-файл и выйти из приложения. Проблема в том, что когда я пытаюсь выйти, приложение закрывается и исполняемый файл запускается раньше ... Я хочу, чтобы вместо этого открывался мой исполняемый файл ...

Это мой код

   var execFile = require('child_process').execFile;
   execFile(filePath).unref();

   const { remote }  = require('electron');
   const { app } = remote;
   app.quit();

Как я могу открыть свой файл и сохранить его после app.quit ()?

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Я решил это с помощью spawn

var execFile = require('child_process').spawn;
execFile(filePath, [], {'detached':true});

const { remote }  = require('electron');
const { app } = remote;
app.quit();
0 голосов
/ 20 апреля 2020

Мы можем выполнить его в фоновом режиме, используя параметр detached:

const { spawn } = require('child_process');

const child = spawn(`exefile path`, [...args], {
  detached: true,
});

child.unref();

Точное поведение отдельных дочерних процессов зависит от ОС. В Windows отсоединенный дочерний процесс будет иметь свое собственное консольное окно, в то время как в Linux отсоединенный дочерний процесс станет лидером новой группы процессов и сеанса.

Если функция unref вызывается отсоединенный процесс, родительский процесс может завершиться независимо от дочернего процесса. Это может быть полезно, если дочерний процесс выполняет длительный процесс, но чтобы он работал в фоновом режиме, дочерние конфигурации stdio также должны быть независимы от родительского процесса.

...