这里有一个小烦恼。作为项目“快速启动”脚本的一部分,我在终端选项卡中启动了一个 webpack 服务器,以及其他选项卡中的其他内容,简而言之:
#!/usr/bin/env bash
gnome-terminal --tab --tab --command \
'bash -c "node_modules/.bin/webpack-dev-server; exec bash"' &
除了服务器选项卡中的 Ctrl+C 外,这几乎可以按预期工作。如果它是一个 Flask 服务器,它会停止并且 bash 提示符会出现在同一个选项卡中(这就是“exec bash”部分的原因)。但是对于 node/webpack,选项卡只是关闭。
手动向 Node 进程发送中断信号会使选项卡保持打开状态(例如 kill -INT <pid>
)。所以问题是从操作系统的角度来看发生了什么。创建什么进程树?哪个进程获得了 SIGINT? exec 替换了什么(如果有的话)?
最佳答案
尝试如下使用trap
:
bash -c "trap 'exec bash' SIGINT; node_modules/.bin/webpack-dev-server;"
它必须在 cmd+c 上杀死 webpack-dev-server 和 exec bash;
关于linux - 终止 webpack-dev-server 后执行 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34595150/