60 - Función exit para terminar un programa y system para llamar otro


Función exit

La función exit interrumpe la ejecución del programa en forma inmediata y retorna un entero al proceso que llamó al programa (normalmente este valor devuelto lo recibe el sistema operativo)

La sintaxis de esta función es:

void exit(int codigo)

Para poder llamar a esta función debemos importar el archivo de inclusión:

#include<stdlib.h>

El valor devuelto por convención es un cero si el programa finaliza en forma correcta o un valor distinto a cero indicando distintos códigos de error que los puede interpretar quien ejecutó el programa.

Es importante notar que a exit la podemos llamar en cualquier parte de nuestro programa e inmediatamente el programa se detendrá y no ejecutará mas comandos del mismo.

Problema 1:

Desarrollar un programa que permita ingresar una clave a un usuario. Si la ingresa en forma incorrecta 3 veces proceder a detener el programa en forma inmediatamente.

Programa: programa199.c

Ver video

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

void ingresoClave()
{
    char clave[50];
    int intentos=0;
    do {
        if (intentos==3)
        {
            exit(1);
        }
        printf("Ingrese clave:");
        gets(clave);
        intentos++;
    } while (strcmp(clave,"123abc")!=0);
}


int main()
{
    ingresoClave();
    printf("Bienvenido\n");
    getch();
    return 0;
}

En la función ingresoClave disponemos una estructura repetitiva que finaliza cuando el operador ingresa la clave "123abc", cada intento incorrecto lo contamos y si el contador llega a 3 procedemos a abortar el programa devolviendo un 1:

        if (intentos==3)
        {
            exit(1);
        }

Si el operador ingresa la clave correcta la función ingresoClave finaliza y retorna a la función main donde mostramos el mensaje de "Bienvenido" y finalmente cuando se ejecuta el comando return de la función main finaliza el programa retornando un valor 0.

Función system

La función system nos permite ejecutar otro programa. Debemos pasar como parámetro una cadena con el nombre del programa a ejecutar, debe ser un programa ejecutable el mismo.

Problema 2:

Implementar un programa que llame al programa del problema 1 (programa199.exe) mediante el empleo de la función system.
Imprimir el código devuelto.

Programa: programa200.c

Ver video

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

int main()
{
    int codigo;

    codigo=system("programa199.exe");
    printf("El programa finalizo retornando el codigo:%i",codigo);
    getch();
    return 0;
}

Para poder probar este programa ya debimos compilar el programa programa199.c y haber generado el exe.

Los archivos programa200.exe y programa199.exe se deben encontrar en la misma carpeta ya que a la función system le pasamos solamente el nombre del archivo a ejecutar y no el path donde se encuentra:

    codigo=system("programa199.exe");

Si indicamos el path el código quedaría:

    codigo=system("c:\\programasc\\programa199.exe");

Es importante notar que cuando finaliza el programa programa199.exe el valor devuelto se almacena en la variable codigo:

    codigo=system("programa199.exe");
    printf("El programa finalizo retornando el codigo:%i",codigo);

Podemos mencionar que si finaliza por la ejecución del exit el valor devuelto es un 1 y si finaliza cuando termina la función main la misma retorna un 0.

Retornar