nodejs child_processes.exec не может вернуть команду ‘nohup’

#javascript #shell #node.js

#javascript #оболочка #node.js

Вопрос:

Я пишу функцию nodejs для выполнения команды ‘nohup’ и отправки результата успешного выполнения в виде http-ответа.

 function _nohup(cmd,res){
    var child = exec('nohup ./'   cmd   '.sh amp;',
    function (error, stdout, stderr) {
        res.writeHeader(200);
        res.end("start process success!");
    });
}
  

Но когда я вызываю функцию по URL-адресу, данные ответа не могут быть возвращены.

Ответ №1:

child_process.exec() ожидает завершения дочернего процесса и затем вызывает обратный вызов. В вашем случае вы запустили фоновый процесс, который, предположительно, никогда не завершается.

Вы, вероятно, хотите child_process.spawn() :

http://nodejs.org/docs/v0.4.9/api/child_processes.html#child_process.spawn