有没有办法,如何在节点js中暂停进程?
const { spawn } = require('child_process');
const process = spawn("run.cmd");
process.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
process.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
process.on('close', (code) => {
});
我想这样打电话:process.pause()
,process.continue()
。
使用cmd进行某些系统调用?
我正在使用Windows。
感谢您的帮助。
答案 0 :(得分:1)
您可以找出进程PID,并使用linux命令通过PID暂停/恢复进程。
您可以将代码更改为process = spawn(cmd & echo $! > txt)
。
这会将您的cmd进程PID保存为txt,然后您可以使用fs
来读取PID。
现在您有了PID,可以运行exec()
来暂停进程kill -STOP <PID>
或恢复已停止的cmd kill -CONT <PID>
。
这两个是unix命令,应该可以正常工作。
答案 1 :(得分:0)
答案 2 :(得分:0)
只需使用readline包,您基本上就可以轻松使用这些功能
暂停流程
rl.pause()
恢复过程
rl.resume()
如果您想了解更多信息,可以查看这两个地方
答案 3 :(得分:0)
我专门制作了一个库,用于在Windows ntsuspend上暂停/恢复Node.js中的进程。
const { spawn } = require('child_process');
const ntsuspend = require('ntsuspend');
const process = spawn("run.cmd");
ntsuspend.suspend(process.pid);
ntsuspend.resume(process.pid);
如果您使用的是Linux或MacOS
const { spawn } = require('child_process');
const ntsuspend = require('ntsuspend');
const process = spawn("run.cmd");
process.kill('SIGSTOP');
process.kill('SIGCONT');