gpt4 book ai didi

javascript - 如何从javascript中的child_process.exec获取返回值?

转载 作者:行者123 更新时间:2023-11-29 18:59:29 25 4
gpt4 key购买 nike

我试过下面的代码,它显示 res 是未定义的。如何返回标准输出?

function run_shell_command(command)
{
var res
exec(command, function(err,stdout,stderr){
if(err) {
console.log('shell error:'+stderr);
} else {
console.log('shell successful');
}
res = stdout
// console.log(stdout)
});
return res
}

最佳答案

除非使用 exec 函数的同步版本,否则无法获得返回值。如果你仍然坚持这样做,你应该使用回调

function run_shell_command(command,cb) {   
exec(command, function(err,stdout,stderr){
if(err) {
cb(stderr);
} else {
cb(stdout);
}
});
}

run_shell_command("ls", function (result) {
// handle errors here
} );

或者您可以将 exec 调用包装在一个 promise 中并使用 async await

const util = require("util");
const { exec } = require("child_process");
const execProm = util.promisify(exec);

async function run_shell_command(command) {
let result;
try {
result = await execProm(command);
} catch(ex) {
result = ex;
}
if ( Error[Symbol.hasInstance](result) )
return ;

return result;
}


run_shell_command("ls").then( res => console.log(res) );

关于javascript - 如何从javascript中的child_process.exec获取返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47629756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com