![用户按下 Ctrl-C 后继续生成文件](https://linux22.com/image/166338/%E7%94%A8%E6%88%B7%E6%8C%89%E4%B8%8B%20Ctrl-C%20%E5%90%8E%E7%BB%A7%E7%BB%AD%E7%94%9F%E6%88%90%E6%96%87%E4%BB%B6.png)
我用来make
运行开发网络服务器(除其他外)。服务器退出后,我想执行一些清理任务。在我按Ctrl+后,服务器退出C,但这会导致make
停止任何进一步的命令执行。作为一个简单的 Makefile 示例,我提供以下内容:
default:
sleep 10
echo hello
当我打电话make
然后在时间到之前按Ctrl+C时,我没有看到“你好”。我尝试过的(根据这个答案):
-i
使用、-k
或两者运行 make- 将第二个条目更改为
-sleep 10
或sleep 10 | true
答案1
我找到了答案堆栈溢出:将命令一分为二,并在“外部”命令中捕获 SIGINT:
external-target:
bash -c "trap 'trap - SIGINT SIGTERM ERR; echo hello; exit 1' SIGINT SIGTERM ERR; $(MAKE) internal-target"
internal-target:
sleep 10