终止子进程
在Node.js中,你可以使用child_process
模块来创建和管理子进程,并且可以使用一些方法来终止子进程。下面是两种常用的终止子进程的方法:
1、使用child.kill()
方法:可以通过子进程对象的kill()
方法来发送一个信号给子进程,以终止它的执行。
const { spawn } = require('child_process');
const child = spawn('node', ['script.js']);
// 终止子进程
child.kill();
2、使用child.process.kill(pid)
方法:如果你想终止一个已知子进程的进程ID(PID),你可以使用kill()
方法并传入PID作为参数。
const { spawn } = require('child_process');
const child = spawn('node', ['script.js']);
// 获取子进程的进程ID(PID)
const pid = child.pid;
// 终止子进程
process.kill(pid);
无论使用哪种方法,都可以通过向子进程发送一个终止信号来停止它的执行。请注意,终止子进程是一个异步操作,可能需要一些时间才能生效。
终止命令行进程
在Node.js中,当你使用exec()
函数执行一个命令时,它将返回一个ChildProcess
对象,你可以使用该对象的kill()
方法来终止对应的Shell进程。以下是一个示例:
const { exec } = require('child_process');
// 执行命令,该命令不会自动终止
const shell = exec('tail -f server.log');
// 终止Shell进程
shell.kill();
在上面的示例中,我们使用exec()
函数执行了一个ls
命令,并将返回的ChildProcess
对象赋值给shell
变量。然后,我们通过调用kill()
方法来终止该Shell进程。
需要注意的是,终止Shell进程是一个异步操作,可能需要一些时间才能生效。此外,kill()
方法还接受一个可选的信号参数,用于指定终止的方式,默认为'SIGTERM'
信号。
如果你想等待Shell进程终止后再执行其他操作,你可以使用on('exit', callback)
方法来监听进程的退出事件。例如:
shell.on('exit', (code, signal) => {
console.log(`Shell进程已终止,退出码: ${code}`);
});
在上述回调函数中,你可以处理进程退出后的逻辑。