Proyecto Minishell
Buenas!
Estoy desarrollando un minishell para Linux usando las siguientes estructuras:
. un arreglo estatico llamado "comando" en el cual se ingrese el comando que quiero ejecutar..x ej: "ls /bin"
.una matriz estatica en la cual en cada posicion de la misma voy ingresando "las partes del comando", o sea, utilizando strtok voy separando "comando" e ingresando "ls" en matriz[o], "/bin" en matriz [1]...y asi...
mi problema surge con execv...no me ejecuta mi "comando" 卢卢...
C me detecta esto:
maxr_minishell.c: En la funci贸n 聭main聮:
maxr_minishell.c:33: error: tipos incompatibles en la asignaci贸n
maxr_minishell.c:44: aviso: se pasa el argumento 2 de 聭execvp聮 desde un tipo de puntero incompatible
aqui les dejo el codigo...espero q puedan ayudar :)
[code]#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>
int main(int argc, char *argv[], char *envp[]){
char matriz[50][50];
char comando[100];
char *puntero;
int cid;
int status;
int pos;
pos = 0;
while(1) {
printf("maxr_minishell>>");
gets(comando);
puntero = strtok(comando," ");
while (puntero != NULL){
strcpy(matriz[pos],puntero);
puts(matriz[pos]);
pos = pos +1;
puntero = strtok(NULL," ");
}
matriz[pos]=' ';
cid = fork();
if (cid<0) {
printf ("Error creando hijo! %d %sn",cid,strerror(cid));
exit (EXIT_FAILURE);
}
if (!cid) {
puts(matriz[0]);
execvp (matriz[0],matriz);
exit(errno);
} else {
wait(&status);
}
}
}[/code]
Estoy desarrollando un minishell para Linux usando las siguientes estructuras:
. un arreglo estatico llamado "comando" en el cual se ingrese el comando que quiero ejecutar..x ej: "ls /bin"
.una matriz estatica en la cual en cada posicion de la misma voy ingresando "las partes del comando", o sea, utilizando strtok voy separando "comando" e ingresando "ls" en matriz[o], "/bin" en matriz [1]...y asi...
mi problema surge con execv...no me ejecuta mi "comando" 卢卢...
C me detecta esto:
maxr_minishell.c: En la funci贸n 聭main聮:
maxr_minishell.c:33: error: tipos incompatibles en la asignaci贸n
maxr_minishell.c:44: aviso: se pasa el argumento 2 de 聭execvp聮 desde un tipo de puntero incompatible
aqui les dejo el codigo...espero q puedan ayudar :)
[code]#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>
int main(int argc, char *argv[], char *envp[]){
char matriz[50][50];
char comando[100];
char *puntero;
int cid;
int status;
int pos;
pos = 0;
while(1) {
printf("maxr_minishell>>");
gets(comando);
puntero = strtok(comando," ");
while (puntero != NULL){
strcpy(matriz[pos],puntero);
puts(matriz[pos]);
pos = pos +1;
puntero = strtok(NULL," ");
}
matriz[pos]=' ';
cid = fork();
if (cid<0) {
printf ("Error creando hijo! %d %sn",cid,strerror(cid));
exit (EXIT_FAILURE);
}
if (!cid) {
puts(matriz[0]);
execvp (matriz[0],matriz);
exit(errno);
} else {
wait(&status);
}
}
}[/code]
