|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 104
|
[C unix] problema exec
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 Codice:
#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;
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Per motivi differenti.
La execle perché non hai aggiunto un NULL dopo i parametri e prima di env. La execvpe perché non hai messo /bin nel path. La execlpe per entrambi i motivi
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 Ultima modifica di ilsensine : 17-06-2008 alle 13:49. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 104
|
Ho apportato le modifiche cm suggerito ma ottengo sempre questi errori:
/tmp/cc8GoIds.o: In function `main': funexec.c funexec.c collect2: ld returned 1 exit status Ora la execle funziona ma queste due continuano a dare l'errore... //case 4: execlpe("/bin/ls","ls","-l",NULL,env);//non funziona //case 8: execvpe("/bin/ls",argv,env);//non funziona |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Opinions are like assholes: anybody has one...
Messaggi: 34290
|
prova a unire la PATH= all'altro comando e mettici export casomai
__________________
Ну давай !! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cina, bugiardo - stolen conto: non paghi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NON CERCO PIU' UN ALIMENTATORE DECENTE ----------------> LINK |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Opinions are like assholes: anybody has one...
Messaggi: 34290
|
ma usare popen ?
__________________
Ну давай !! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cina, bugiardo - stolen conto: non paghi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NON CERCO PIU' UN ALIMENTATORE DECENTE ----------------> LINK |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:30.




















