我用来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