Unix - Control Errores Shell/Unix

 
Vista:

Control Errores Shell/Unix

Publicado por Kronino (1 intervención) el 04/05/2010 15:28:05
Buenas tardes.

Estamos trabajndo en unificar salidas de error de ejecutables en lenguaje C llamados a traves de un script.
Normalmente, al realizar una llamada a un ejecutable C el comando que solemos utilizar para recoger la finalizacion del proceso es el siguiente:
if [ $? -eq 0 ]
then
# Mensaje de error ....
fi

Nuestro problema es que nos gustaria conocer el numero de error exacto que nos devuelve el proceso pero segun hemos observado, el chequeo unicamente devuelve el error exacto si el numero de error esta comprendido entre el 0 y 255.

Los errores que controlamos son normalmente errores de BBDD (ORACLE). Estos errores pueden ir desde -1 hasta -1403, -2112, ...

Es posible disponer en unix de la finalizacion del proceso si este concluye con un numero negativo o un numero superior a 255?

Muchisimas Gracias de antemano.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Control Errores Shell/Unix

Publicado por Tom (178 intervenciones) el 05/05/2010 15:22:45
Parece un comportamiento generalizado en todos los intérpretes shell. En realidad lo que hacen es un módulo 256 del valor del exit de cualquier programa.

Así que está difícil.

La solución generalizada es que tu programa c, en caso de error, retorne algo distinto de 0 y, además, muestre por la salida de errores algo más detallado (en vuestro caso podría ser el número de error de Oracle).

if [ miprograma 2>/tmp/errores.$$ ]
then
echo "ERROR:\n"
cat /tmp/errores.$$
rm /tmp/errores.$$
exit 1
fi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar