Ошибка EBUSY при загрузке и выполнении EXE-файла с Node.js

#node.js #spawn

#node.js #порождение

Вопрос:

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

 var file = fs.createWriteStream("myex.exe")
http.get("http://host/myex.exe", function(response) {
     response.pipe(file);
     const subproc = spawn('myex.',['param1', 'param2'], {
        detached: true,
        stdio: 'ignore'
    });
    subproc.unref();
});
 

Проблема в том, что когда node.js пытается запустить исполняемый файл в новом процессе, возникает ошибка:

 Error: spawn EBUSY
 

Я попытался выполнить таким же образом EXE-файл, не загружая его, и процесс создан правильно. Если я выполняю его с exec помощью функции, он работает отлично, но я не могу отсоединить новый процесс. В чем проблема и какое может быть возможное решение?

Ответ №1:

я думаю, проблема в том, что файл занят, мой способ таков: используйте settimeout , подождите некоторое время, а затем используйте execFile