问题描述
我想知道如何使用子进程或 node.js 中的任何内容关闭正在运行的批处理文件
这是子进程中exec的例子
const { exec,spawn } = require('child_process');
exec('my.bat',(err,stdout,stderr) => {
if (err) {
console.error(err);
return;
}
console.log(stdout);
});
解决方法
为了在使用 'child_process'
时终止生成的进程,您需要返回创建的 ChildProcess 引用,在本例中为 exec()
。
然后您可以使用它自己的 API 终止该进程,即。做childProcess.kill()
。
完整示例:
const { exec,spawn } = require('child_process');
const childProcess = exec('my.bat',(err,stdout,stderr) => {
// explicitly kill the process
childProcess.kill();
if (err) {
console.error(err);
return;
}
console.log(stdout);
});
在 node.js 文档中查找更多详细信息
,您可以检索 bat 文件执行生成的 PID,而不是使用 exec 使用 spawn。调用process.kill(PID)杀死正在运行的bat文件
var spawn = require('child_process').spawn;
var child = spawn('my.bat',{detached: true});
process.kill(child.pid);