尝试使用 shell true 和 detached true nodejs 终止生成进程
Try to kill a spawn process with shell true and detached true nodejs
我正在尝试编写一个简单的 node.js
应用程序,以便 运行 硒在专用 shell 中,然后关闭 shell 和相应的子进程(在 5 秒超时后的那一刻为了测试它)。
这是我到目前为止的代码:
const spawn = require('child_process').spawn;
const seleniumHub = spawn('java', ['-jar', 'selenium-server-standalone-2.48.2.jar'], { shell: true , detached: true });
seleniumHub.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
seleniumHub.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
seleniumHub.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
setTimeout(function () {
// process.kill(seleniumHub.pid); no errors but shell not closed
// seleniumHub.kill('SIGINT'); completely ignored
}, 5000);
Selenium 正确 运行s,但我无法关闭打开的 shell。
如果我尝试通过它的 pid 关闭它,我会得到一个错误,指出 pid 不存在。
如果我尝试在子进程上调用 kill
方法,它会完全忽略 command.Any 建议吗?
谢谢
p.s。我在 Windows 机器上
好的,我自己找到了解决方案,如果它对某人有用,我会在这里发布。
作为解决方法,我再次使用 spawn
并调用 Windows 的 taskkill
,将 f 和 t 作为参数传递:
spawn("taskkill", ["/pid", seleniumHub.pid, '/f', '/t']);
我正在尝试编写一个简单的 node.js
应用程序,以便 运行 硒在专用 shell 中,然后关闭 shell 和相应的子进程(在 5 秒超时后的那一刻为了测试它)。
这是我到目前为止的代码:
const spawn = require('child_process').spawn;
const seleniumHub = spawn('java', ['-jar', 'selenium-server-standalone-2.48.2.jar'], { shell: true , detached: true });
seleniumHub.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
seleniumHub.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
seleniumHub.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
setTimeout(function () {
// process.kill(seleniumHub.pid); no errors but shell not closed
// seleniumHub.kill('SIGINT'); completely ignored
}, 5000);
Selenium 正确 运行s,但我无法关闭打开的 shell。
如果我尝试通过它的 pid 关闭它,我会得到一个错误,指出 pid 不存在。
如果我尝试在子进程上调用 kill
方法,它会完全忽略 command.Any 建议吗?
谢谢
p.s。我在 Windows 机器上
好的,我自己找到了解决方案,如果它对某人有用,我会在这里发布。
作为解决方法,我再次使用 spawn
并调用 Windows 的 taskkill
,将 f 和 t 作为参数传递:
spawn("taskkill", ["/pid", seleniumHub.pid, '/f', '/t']);