Consultas, desarrollo de programas y petición de presupuestos:

jueves, 12 de julio de 2012

solucion 7: alumno antonio

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

int main(int argc, char **argv) {
    char Npid[10];
    char hazlo[20];
    char proceso[20];
    char op = ' ';
    void menu();
    int pedirNum();

    while (op != 0) {                                                    //Mientras no se elija la opcion de salida,me muestra el menu y la función pedirNum.
        system("clear");
        menu();
        op=pedirNum();                                                    //Ejecutamos la función pedirNum y lo que devuelve se lo asignamos a op.

        switch (op) {                                                    //Tratamos los casos con %s para no tener problemas si el usuario uintroduce una letra en la selección en lugar de un número.
        case '1':
            system("ps -Ao user,pid,comm,stat |grep -i $USER | grep -v mata");    //Me muestra los apartados que quiero y filtramos nuestro usuario y evitamos que aparezca nuestro programa.
            printf("\nEscriba el PID del proceso que quiere matar: ");
            scanf("%s", Npid);
            sprintf(hazlo, "kill -9 %s", Npid);                            //Copiamos lo que leemos en Npid junto con el comando a ejecutar en la cadena (hazlo).
            system(hazlo);
            break;
        case '2':
            system("ps -Ao user,pid,comm,stat |grep -i $USER | grep -v mata");
            printf("\nEscriba el PID del proceso que quiere parar: ");
            scanf("%s", Npid);
            sprintf(hazlo, "kill -19 %s", Npid);
            system(hazlo);
            break;
        case '3':
            printf("\n");
            system("ps -Ao user,pid,comm,stat | grep T");                //Mostramos los apartados que nos interesa y filtramos los que esten parados y podamos continuar.
            printf("\nEscriba el PID del proceso que quiere continuar: ");
            scanf("%s", Npid);
            sprintf(hazlo, "kill -18 %s", Npid);
            system(hazlo);
            break;
        case '4':
            system("ps -Ao user,pid,comm,stat |grep -i $USER | grep -v mata");
            printf("\nEscriba el PID del proceso que quiere terminar: ");
            scanf("%s", Npid);
            sprintf(hazlo, "kill -9 %s", Npid);
            system(hazlo);
            break;
        case '5':
            system("ps -Ao user,pid,comm,stat |grep -i $USER | grep -v mata");
            printf("Escriba el nombre del proceso que quiere terminar: ");
            scanf("%s", proceso);
            sprintf(hazlo, "killall %s", proceso);
            system(hazlo);
            break;
        case '6':
            system("gnome-terminal -e top");                            //Abrimos otra terminal y le pasamos el comando top.
            break;
        case '0':
            system("clear");
            printf("Saliendo del programa...\n");
            exit(1);
            break;
        default:
            printf("--OPCION INCORRECTA--");                            //Si no es una opción correcta, nos muestra el mensaje.
        }
    }
    return 0;
}

// Procedimiento menu.

void menu() {
    printf("\n\n-------MENU-------\n\n");
    printf("1.Matar un proceso.\n");
    printf("2.Para un proceso.\n");
    printf("3.Continua un proceso.\n");
    printf("4.Termina un proceso.\n");
    printf("5.Matar procesos por su nombre.\n");
    printf("6.Ver procesos por consumo.\n");
    printf("0.Salir del programa.\n");
}

// Función Pedir Número.
int pedirNum() {
    char num = ' ';
    printf("\nElija operación(0-6)");
    scanf("%s", &num);
    return num;
}

No hay comentarios:

Publicar un comentario