import {exec, spawn} from 'child_process'; class ProcessManager { constructor() { this.processes = new Map(); // 存储所有子进程的引用 } // 启动新的子进程 startProcess(key, command, callback) { // 如果相同 key 的进程已经在运行,先终止它 if (this.processes.has(key)) { this.killProcess(key); } // 启动新进程 const child = exec(command, (error, stdout, stderr) => { if (callback) callback(error, stdout, stderr); // 执行回调 // 执行完成后,清理存储的进程 this.processes.delete(key); }); // 存储进程引用 this.processes.set(key, child); } // 终止指定 key 的子进程 killProcess(key) { const child = this.processes.get(key); if (child) { child.kill(); this.processes.delete(key); } } // 终止所有子进程 killAll() { for (const [key, child] of this.processes.entries()) { child.kill(); this.processes.delete(key); } } } export default ProcessManager;