Foros del Web » Administración de Sistemas » Unix / Linux »

Cachar el "estado de salida" de un programa

Estas en el tema de Cachar el "estado de salida" de un programa en el foro de Unix / Linux en Foros del Web. No me refiero a la salida del programa (texto) sino al estado (o como se llame). Por ejemplo, puedo tener el siguiente programa: Código: #include<stdio.h> ...
  #1 (permalink)  
Antiguo 19/08/2008, 08:45
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 4 meses
Puntos: 102
Cachar el "estado de salida" de un programa

No me refiero a la salida del programa (texto) sino al estado (o como se llame). Por ejemplo, puedo tener el siguiente programa:
Código:
#include<stdio.h>

int main(int argc, char *argv[]) 
{ 
    if(algo) {
        printf ("Sucedió algo\n");
        return 1; // ¿o exit(1)?
    } else {
        printf("No sucedió algo\n");
        return 0;
    } 
}
Fuera de lo que muestre en pantalla, quiero ver si podría capturar ese "1" o "0". La idea es mandar a llamar al programa desde un Bash script que, dependiendo de ese valor hará una u otra cosa ... Entonces, ¿cómo podría capturar y valorar dicho valor?

GRASIAS DE ANTEBRASO
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #2 (permalink)  
Antiguo 19/08/2008, 10:26
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 5 meses
Puntos: 29
Respuesta: Cachar el "estado de salida" de un programa

Pues yo alguna vez tuve esa gran inquietud pero nunca he tenido la oportunidad de solucionar ese problemita de comunicar un programa de un lenguaje con un shell en unix. A mi lo único que se me ocurrió fue escribir ese output en un archivo temporal para que el programa en bash lo leyera. Siento de no ser de mas ayuda.

saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #3 (permalink)  
Antiguo 21/08/2008, 11:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 4 meses
Puntos: 102
Respuesta: Cachar el "estado de salida" de un programa

Gracias Koveart por la sugerencia, de hecho, lo estaba manejando así .

Seguí viendo el tema y encontré que dicho valor es asignado a la variable "?" ... así, tal cuál. Entonces puedo hacer:
Código:
$ ./miPrograma
Sucedió algo
$ echo $?
1
... y debería imprimir ese "1" o "0" con el que terminó el programa. Lo he probado así (con unos y ceros) y me funciona, pero he intentado con otros valores "medio locos" () y me imprime otros valores igual medio locos pero distintos a los que yo coloqué.

Si encuentro más info la comparto. Saludos y gracias
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 21/08/2008, 18:47
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 61
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Cachar el "estado de salida" de un programa

creo que imprime eso por que cuando tu en un programa le das return 0 o return 1 no son solo simples valores sino es como un tipo booleano verdadero, falso esto le indica al sistema si el programa a finalizado bien o no :P
  #5 (permalink)  
Antiguo 21/08/2008, 19:15
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 20 años, 3 meses
Puntos: 47
Respuesta: Cachar el "estado de salida" de un programa

Por lo que estuve viendo (http://www.opengroup.org/onlinepubs/...xsh/_exit.html), se debería terminar el programa con la función exit().
Fijate si te sirve.
Porque la verdad es que C no se nada, jeje.
Abrazo.
__________________
¡Volviendo a la programación!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:41.