stella_650
17-06-2008, 11:24
ciao a tutti..Ho realizzato un piccolo programma in C unix per sperimentare il funzionamento delle funzioni exec.
CI sono 3 che vanno in errore...in particolare, la execlpe, la execle,la execvpe.
Inizialmente credevo fosse un problema di settaggio scorretto della variabile di ambiente...ma poi la execve mi va...per cui sarà un qualcosa di diverso...
Riporto il codice..sperando in un vostro aiuto
#include <unistd.h>
#include <stdio.h>
int main(void)
{
int scelta;
//Prova delle funzioni exec...tutte eseguono ls
char *env[]={"USER=user","PATH=/home/user/Lab_so/EserciziRiepilogo/",(char*)0};
char *argv[]={"ls","-l",(char*)0};
printf("Scegliere una opzione per le funzioni exec\n");
printf("1) per eseguire il comando ls con la funzione execl\n");
printf("2) per eseguire il comando ls con la funzione execle\n");
printf("3) per eseguire il comando ls con la funzione execlp\n");
printf("4) per eseguire il comando ls con la funzione execlpe\n");
printf("5) per eseguire il comando ls con la funzione execv\n");
printf("6) per eseguire il comando ls con la funzione execve\n");
printf("7) per eseguire il comando ls con la funzione execvp\n");
printf("8) per eseguire il comando ls con la funzione execvpe\n");
printf("Digitare la scelta\n");
scanf("%d",&scelta);
switch (scelta)
{
case 1: execl("/bin/ls","ls","-l",(char*)0);
break;
case 2: execle("/bin/ls","ls","-l",env);//non funziona
break;
case 3:execlp("ls","ls","-l",(char*)0);
break;
case 4: execlpe("ls","ls","-l",env);//non funziona
break;
case 5: execv("/bin/ls",argv);
break;
case 6: execve("/bin/ls",argv,env);
break;
case 7: execvp("ls",argv);
break;
case 8: execvpe("ls",argv,env);//non funziona
break;
}
}
Grazie
CI sono 3 che vanno in errore...in particolare, la execlpe, la execle,la execvpe.
Inizialmente credevo fosse un problema di settaggio scorretto della variabile di ambiente...ma poi la execve mi va...per cui sarà un qualcosa di diverso...
Riporto il codice..sperando in un vostro aiuto
#include <unistd.h>
#include <stdio.h>
int main(void)
{
int scelta;
//Prova delle funzioni exec...tutte eseguono ls
char *env[]={"USER=user","PATH=/home/user/Lab_so/EserciziRiepilogo/",(char*)0};
char *argv[]={"ls","-l",(char*)0};
printf("Scegliere una opzione per le funzioni exec\n");
printf("1) per eseguire il comando ls con la funzione execl\n");
printf("2) per eseguire il comando ls con la funzione execle\n");
printf("3) per eseguire il comando ls con la funzione execlp\n");
printf("4) per eseguire il comando ls con la funzione execlpe\n");
printf("5) per eseguire il comando ls con la funzione execv\n");
printf("6) per eseguire il comando ls con la funzione execve\n");
printf("7) per eseguire il comando ls con la funzione execvp\n");
printf("8) per eseguire il comando ls con la funzione execvpe\n");
printf("Digitare la scelta\n");
scanf("%d",&scelta);
switch (scelta)
{
case 1: execl("/bin/ls","ls","-l",(char*)0);
break;
case 2: execle("/bin/ls","ls","-l",env);//non funziona
break;
case 3:execlp("ls","ls","-l",(char*)0);
break;
case 4: execlpe("ls","ls","-l",env);//non funziona
break;
case 5: execv("/bin/ls",argv);
break;
case 6: execve("/bin/ls",argv,env);
break;
case 7: execvp("ls",argv);
break;
case 8: execvpe("ls",argv,env);//non funziona
break;
}
}
Grazie