编写 makefile 时如何在退出时终止子进程?
When writing a makefile how can I kill a subprocess on exit?
生成文件:
default:
command1 &
command2 &
当我 运行 make
并按下 Control-C 时,command1
和 command2
继续 运行宁。我怎样才能让 command1
和 command2
在 make 被杀死后被杀死? command1
和 command2
应该 运行 并行。 Command1 监视源文件并编译它们。 Command2 是一个网络服务器。
您可以将 make 自己的并行选项 make -j2
与这样的 makefile 一起使用:
default: task1 task2
task1:
command1
task2:
command2
make 将负责中断 command1 和 command2。
以下代码有效,我不知道为什么。我从 https://veithen.github.io/2014/11/16/sigterm-propagation.html
拿来的
Makefile
:
.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=$?
生成文件:
default:
command1 &
command2 &
当我 运行 make
并按下 Control-C 时,command1
和 command2
继续 运行宁。我怎样才能让 command1
和 command2
在 make 被杀死后被杀死? command1
和 command2
应该 运行 并行。 Command1 监视源文件并编译它们。 Command2 是一个网络服务器。
您可以将 make 自己的并行选项 make -j2
与这样的 makefile 一起使用:
default: task1 task2
task1:
command1
task2:
command2
make 将负责中断 command1 和 command2。
以下代码有效,我不知道为什么。我从 https://veithen.github.io/2014/11/16/sigterm-propagation.html
拿来的Makefile
:
.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=$?