2015-12-15 4 views
0

POSIX-системы предоставляют семейство функций exec, которые позволяют загружать что-то, что может быть различным в текущем процессе, сохраняя дескрипторы открытых файлов, идентификатор процесса и скоро.Способ вызова execl, execle, execlp, execv, execvP или execvp из Node.js

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

К сожалению, к моему большому удивлению, я не смог найти способ вызвать любую из exec* функций в Node.js. Итак, каков правильный способ заменить текущий выполняемый процесс Node.js другим изображением?

+0

Рассмотрите этот вопрос: http://stackoverflow.com/questions/4018154/node-js-as-a-background-service – clay

+0

Рассмотрите этот https://nodejs.org/ api/child_process.html – mkinawy

+0

@mkinawy child_process не перезаписывает существующий процесс. Он порождает новый, и у него будет новый PID. – toriningen

ответ

1

Я создал модуль для вызова функции execvp из NodeJS: https://github.com/OrKoN/native-exec

Это работает так:

var exec = require('native-exec'); 

exec('ls', { 
    newEnvKey: newEnvValue, 
}, '-lsa'); // => the process is replaced with ls, which runs and exits 

Поскольку это родной аддон узел он требует ++ компилятор C установлен. Прекрасно работает в Docker, на Mac OS и Linux. Наверное, не работает в Windows. Протестировано с узлами 6, 7 и 8.

+0

Я предполагаю, что он не должен работать в Windows, если только не запущен в LXSS. – toriningen

0

Я закончил с использованием ffi модуля, а также экспортировал execvp от libc.

Смежные вопросы