[英]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.