Está en la página 1de 2

#include "practica.

h"

bool otro = true;


void main(void){
char texto[1024];
char *argv[64];
pid_t getpid(void);
int i;

while (1) {

printf("-");
fgets(texto,1024,stdin);
printf("\n");
comprueba(texto, argv);
for(i = 0; argv[0][i]; i++)
argv[0][i] = tolower(argv[0][i]);
i = 0;
if (strcmp(argv[0], "exit") == 0)
exit(0);

lanzar(argv);

}
}

void comprueba(char *texto, char **argv){

while (*texto != '\0') {

while (*texto == ' ' || *texto == '\t' || *texto == '\n' || *texto == '&'){
*texto++ = '\0';
if(*texto == '&')otro = false;
}

*argv++ = texto;
while (*texto != '\0' && *texto != ' ' && *texto != '\t' && *texto !=
'\n'&& *texto != '&')

texto++;

}
*argv = '\0';
}

void lanzar(char **argv){


pid_t pid;
int status;

if ((pid = fork()) < 0) {


printf("El proceso Padre ha fallado\n");
exit(1);
}else if (pid == 0) {

if (execvp(*argv, argv) < 0 ) {


printf("El proceso Hijo ha fallado o has continuado\n");
exit(1);
}

if ( otro == true) {
wait(&status) != pid;

}else{
printf ( "PID: %d\n", getpid());

otro = true;
}

También podría gustarte