在终止webpack-dev-server后执行bash

3

这里有一个小问题。作为项目“快速启动”脚本的一部分,我在终端标签页中启动了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来说,选项卡只会关闭。 手动向节点进程发送中断信号会保留选项卡(例如,kill -INT )。因此问题是从操作系统的角度发生了什么。创建了哪个进程树?哪个进程接收到SIGINT信号?什么被exec替换(如果有)? 可能相关的链接:https://github.com/nodejs/node/issues/4432
1个回答

1
尝试按以下方式使用trap
bash -c "trap 'exec bash' SIGINT; node_modules/.bin/webpack-dev-server;"

需要在命令行中使用cmd+c组合键来关闭webpack-dev-server并执行bash命令。


谢谢,陷阱确实起作用。如果有人感兴趣,这里是一些基本信息:Traps@TLDP。不过,了解为什么在这种情况下需要它会更好。 - wrwrwr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接