解决 了我需要在 MakeFile 中生成后台进程并考虑它们的退出代码。设想:
- 在后台产生了几个进程。
- MakeFile 继续评估(并且不想在某个循环中检查生成的进程 PID 等等)
- 某些进程以非零退出代码退出
- 使实用程序以非零退出代码退出
自然地,我考虑使用command &
在后台生成一个进程。
问题:如果指定了命令,command &
则 make 进程不会跟踪它的退出代码。
样品 1
do:
@false & \
echo "all is normal"
%make -f exit_status_test.mk
all is normal
样品 2
do:
@false && \
echo "all is normal"
%make -f exit_status_test.mk
*** Error code 1
Stop in /usr/home/scher/tmp/lock_testing.
示例 1 显示 make 实用程序不考虑后台进程的退出代码。
PS 请不要建议存储生成的进程 PID 并在循环中检查它们,并有一些sleep
延迟等等。需要继续评估 MakeFile 并以非零代码自动退出。
解决方案
do:
@(echo "background command" ; (echo "[HANDLER] Prev command exits with $$?")) & \
echo "doing something"
所以我们可以创建一系列命令来处理后台进程的退出状态。