nodejs exec 设置超时
时间: 2023-10-09 14:16:37 浏览: 320
Node.js中可以使用child_process模块的exec方法来执行系统命令,设置超时的方式如下:
```javascript
const { exec } = require('child_process');
function runCommand(command, timeout) {
return new Promise((resolve, reject) => {
// 执行命令
const child = exec(command);
// 超时处理
const timer = setTimeout(() => {
child.kill(); // 终止子进程
reject(new Error('Command execution timed out'));
}, timeout);
// 处理命令输出
let output = '';
child.stdout.on('data', data => {
output += data.toString();
});
// 处理命令错误输出
let errorOutput = '';
child.stderr.on('data', data => {
errorOutput += data.toString();
});
// 处理命令结束事件
child.on('close', code => {
clearTimeout(timer); // 清除定时器
if (code !== 0) { // 命令执行失败
reject(new Error(errorOutput));
} else { // 命令执行成功
resolve(output);
}
});
});
}
```
在上述代码中,通过传入超时时间参数来设置子进程的超时时间,当子进程超时未结束时,利用setTimeout终止子进程,并返回错误。同时在命令执行过程中,通过监听命令的标准输出和标准错误输出来获取命令执行的结果和错误信息。
阅读全文