解决 我需要在MakeFile中生成后台进程,并考虑它们的退出代码。 情形:
当然,我考虑使用command &
在后台生成一个进程。
问题:如果指定的命令类似于command &
,则make process 不会跟踪它的退出代码。
示例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实用程序不考虑后台进程的退出代码。
P.S。请不要建议存储生成的进程PID并在循环中检查它们有一些sleep
延迟等等。需要继续评估MakeFile并自动退出非零代码。
解决方案
do:
@(echo "background command" ; (echo "[HANDLER] Prev command exits with $$?")) & \
echo "doing something"
因此我们可以创建一系列命令来处理后台进程的退出状态。
答案 0 :(得分:0)
这似乎是一个错误的尝试,创建一个可以并行运行多个作业的Makefile
,实际上make通常可以为你做这个。
您需要做的就是在make中为每个作业分别命令:
target: job1 job2
job1:
some_command
job2:
some_other_command
如果您在Makefile
中使用此类内容,然后运行make -j2 target
,则some_command
和some_other_command
将并行运行。
看看你是否能找到一种方法来制作像这样并行运行你的作品。