【发布时间】:2012-05-16 21:10:43
【问题描述】:
已解决 我需要在 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 实用程序不考虑后台进程的退出代码。
附:请不要建议存储生成的进程 PID 并在循环中检查它们,并带有一些 sleep 延迟等等。需要继续评估 MakeFile 并以非零代码自动退出。
解决方案
do:
@(echo "background command" ; (echo "[HANDLER] Prev command exits with $$?")) & \
echo "doing something"
所以我们可以创建一系列命令来处理后台进程的退出状态。
【问题讨论】:
标签: shell makefile background-process spawn