用户按下 Ctrl-C 后继续生成文件

用户按下 Ctrl-C 后继续生成文件

我用来make运行开发网络服务器(除其他外)。服务器退出后,我想执行一些清理任务。在我按Ctrl+后,服务器退出C,但这会导致make停止任何进一步的命令执行。作为一个简单的 Makefile 示例,我提供以下内容:

default:
    sleep 10
    echo hello

当我打电话make然后在时间到之前按Ctrl+C时,我没有看到“你好”。我尝试过的(根据这个答案):

  • -i使用、-k或两者运行 make
  • 将第二个条目更改为-sleep 10sleep 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

相关内容