在编写makefile时如何在退出时杀死子进程?

时间:2016-05-08 17:50:03

标签: makefile background-process

生成文件:

default:
    command1 &
    command2 &

当我运行make并点击 Control-C 时,command1command2继续运行。我怎样才能使command1command2一旦被杀死就被杀死? command1command2应该并行运行。 Command1监视源文件并编译它们。 Command2是一个网络服务器。

2 个答案:

答案 0 :(得分:2)

您可以将make自己的并行选项make -j2与makefile一起使用:

default: task1 task2

task1:
        command1

task2:
        command2

make将负责中断command1和command2。

答案 1 :(得分:0)

以下代码有效我不明白为什么。我是从https://veithen.github.io/2014/11/16/sigterm-propagation.html

取的

生成文件:

.PHONY: default
    default:
    bash build.sh

Build.sh:

#!/bin/bash
trap 'kill -TERM $PID' TERM INT

webpack & # Command 1
http-server -p 8000 -c-1 & # Command 2

PID=$!
wait $PID
trap - TERM INT
wait $PID
EXIT_STATUS=$?