Anb*_*yan 5 linux signals makefile build gnu-make
我正在尝试捕获退出(ctrl+c)信号以执行一些清理活动。
在shell脚本中我按照下面的函数来捕获,
#To trap ctrl-c signals
trap ctrl_c INT
#To trap exit signals
trap on_exit EXIT
function ctrl_c() {
echo "exited by user"
exit
}
function on_exit() {
echo "exited by user"
exit
}
Run Code Online (Sandbox Code Playgroud)
我如何在 Makefile 中实现相同的目标?
你不能在 make 中捕获信号。尝试使用.INTERMEDIATE
清理并阅读5.6 中断或终止 make
all: test.out
test.out: test.tmp
sleep 10
test.tmp:
echo x>test.tmp
.PHONY: all
.INTERMEDIATE: test.tmp
Run Code Online (Sandbox Code Playgroud)
Make 捕获中断信号并删除这些文件(如果它们是图形的一部分并且在启动之前不存在):
$ make
echo x>test.tmp
sleep 10
make: *** [Makefile:4: test.out] Interrupt
make: *** Deleting intermediate file 'test.tmp'
Run Code Online (Sandbox Code Playgroud)
如果您确实需要在 make 退出时执行某些程序,请在某个变量的初始化中生成一个后台进程,并让它等待主 make 进程终止:
DUMMY := $(info launching the moniror process...)$(shell some-command& )
Run Code Online (Sandbox Code Playgroud)