![](/img/trans.png)
[英]Can I pass a variable in Javascript to a child_process.exec command?
[英]How to set variable from child_process.exec()
我有一個簡單的功能可以從網絡上運行系統應用程序。
server.route({
method: 'POST',
path: '/executeMain',
handler: (req, res) => {
var success = false;
exec("./main", (error, stdout, stderr) => {
if (error) {
console.log('error: ' + error.message);
return;
}
if (stderr) {
console.log('error: ' + stderr);
return;
}
console.log(stdout);
success = true;
});
if (success) {
return res.response("OK").code(200);
}
else {
return res.response("ERR").code(500);
}
}
});
在 exec 函數中,我想將成功設置為 true,但它永遠不會發生。 任何人都可以幫助我並向我解釋為什么這是行不通的。
child_process.exec()
是一個異步函數。 所以進程開始運行后台,函數立即返回。 因此,您要在流程完成和設置之前檢查success
的值。
您的處理程序也需要是異步的,因為它依賴於異步函數的返回值。 就像是:
server.route({
method: 'POST',
path: '/executeMain',
handler: (req, res) => {
return new Promise( (resolve, reject) => {
exec("./main", (error, stdout, stderr) => {
if (error) {
console.log('eror: ' + error.message);
reject( res.response("ERR").code(500) )
}
if (stderr) {
console.log('error: ' + stderr);
reject( res.response("ERR").code(500) )
}
console.log(stdout);
resolve( res.response("OK").code(200) )
});
});
}
另一方面,您可能不想僅僅因為stderr
為真就拋出錯誤。 許多程序即使成功也寫入標准錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.