Node.js 杀壳

Node.js 杀壳,node.js,express,child-process,Node.js,Express,Child Process,我不确定这是否是一个bug或特性,但在杀死一个shell(使用kill-9)时,它不会退出进程,因为它会调用exit事件,但所有代码都会继续运行。这是我的密码 //index.js const{spawn}=require(“子进程”); const deploy=spawn(`node server`{ 壳牌:是的, }); console.log(deploy.pid);//我用这个来获取PID,这样我就可以使用kill命令了 deploy.stdout.on(“数据”,(数据)=>{ lo

我不确定这是否是一个bug或特性,但在杀死一个shell(使用
kill-9
)时,它不会退出进程,因为它会调用exit事件,但所有代码都会继续运行。这是我的密码

//index.js
const{spawn}=require(“子进程”);
const deploy=spawn(`node server`{
壳牌:是的,
});
console.log(deploy.pid);//我用这个来获取PID,这样我就可以使用kill命令了
deploy.stdout.on(“数据”,(数据)=>{
log(data.toString());
});
deploy.stderr.on(“数据”,(数据)=>{
log(data.toString());
});
deploy.on(“退出”,(代码)=>{
控制台日志(“退出”);
});
//server.js
const app=require(“express”)();
应用程序使用(“/”,(请求,请求)=>{
console.log(“调试”);
res.send(“你好,世界”);
});
app.listen(8000,()=>console.log(“网站在线”);

根据文档,在Linux上使用带有
-c
标志的
sh
命令,1)修复了它无法关闭的问题,2)允许您运行多个命令,而无需首先导致问题的
shell
选项

例如:

const deploy=spawn(“sh”、[“-c”、`node server&&ls`]{
stdio:[“继承”、“继承”、“继承”],
});