You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中向子进程发送信号以暂停/重启进程?

在Node.js中给bash子进程发送暂停/重启信号的方法

你可以直接通过Node.js的ChildProcess实例提供的kill()方法来发送SIGSTOP和SIGCONT信号,无需额外执行系统的kill命令,具体实现如下:

暂停子进程

调用子进程实例的kill()方法,传入'SIGSTOP'参数即可暂停进程,效果和kill -STOP ${k.pid}完全一致:

k.kill('SIGSTOP');

恢复子进程

同样使用kill()方法,传入'SIGCONT'参数就能让暂停的子进程继续执行,对应kill -CONT ${k.pid}的效果:

k.kill('SIGCONT');

完整示例代码

如果需要在逻辑中添加自动暂停/恢复的演示,比如用定时器模拟操作:

const cp = require('child_process');
const k = cp.spawn('bash');

// 让bash执行一个持续输出的循环
k.stdin.end(`while true; do echo "子进程运行中..."; sleep 1; done`);
k.stdout.pipe(process.stdout);
k.stderr.pipe(process.stderr);

// 3秒后暂停子进程
setTimeout(() => {
  console.log('\n=== 暂停子进程 ===');
  k.kill('SIGSTOP');
}, 3000);

// 6秒后恢复子进程
setTimeout(() => {
  console.log('\n=== 恢复子进程 ===');
  k.kill('SIGCONT');
}, 6000);

补充说明

  • 注意kill()方法名容易产生误解,它不仅能发送终止信号,还支持发送所有合法的POSIX信号,包括暂停和恢复类信号。
  • 信号名称不区分大小写,但通常习惯使用大写形式,现代Node.js版本均支持这些信号。

内容的提问来源于stack exchange,提问作者Alexander Mills

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 01:01:19