Closed neverkas closed 2 years ago
Refactor de la solucion anterior
compilation.log
/dev/null
porque los errores de compilacion los manejaremos desde el target que crea los objetos .o con gcc
# orden/recipe del target watch
$(foreach modulo, $(DIR_MODULOS), \
screen -dmS $(modulo) && \
screen -S $(modulo) -X stuff "make --no-print-directory -C project/$(modulo) watch 1>logs/compilation.log 2>/dev/null\n";)
error.log
gcc
ya que es 0 si tuvo exito, caso contrario ocurrio un error
# orden/recipe del target $(DIR_BIN)/$(BIN): $(OBJ)
@if $(CC) $(DEPFLAGS) $(CPPFLAGS) $(CFLAGS) -o $(DIR_OBJ)/$*.o -c $(DIR_SRC)/$*.c 1>>$(DIR_COMPILE_LOGS)/error.log 2>&1; \
then \
mv -f $(DIR_DEP)/$*.tmp.d $(DIR_DEP)/$*.d && touch $@;\
echo $(LOG) "Compilamos el archivo fuente ($(notdir $<)) en objeto en $(dir $@)" $(MSG_OK);\
echo $(LOG) "Se modificó el archivo ($?)" $(MSG_OK);\
else \
echo $(LOG) "Ocurrio un error al compilar $(OBJ)" $(MSG_ERROR);\
sleep 2 && exit 1;\
fi
@echo ""
Problema Las siguientes alternativas no funcionan de manera eficiente, porque al matar la sesion de
screen
observamos conps -ef
que el comando pasado a la sesion se sigue ejecutandoSolucion temporal
Observaciones
nohup
al matar la sesion descreen
pasandolequit
igual seguira ejecutando&
para dejar la tarea en background, sucede lo mismo que con hupbash -c
seguido del comando, se queda en foreground