| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  17-06-2008, 12:24 | #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;
	}
} | 
|   |   | 
|  17-06-2008, 13:44 | #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. | 
|   |   | 
|  17-06-2008, 14:17 | #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  .text+0x18b): undefined reference to `execlpe' funexec.c  .text+0x1ed): undefined reference to `execvpe' 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 | 
|   |   | 
|  17-06-2008, 14:24 | #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 | 
|   |   | 
|  17-06-2008, 14:28 | #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 | |
|   |   | 
|  17-06-2008, 14:31 | #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: 04:09.









 
		 
		 
		 
		








 
  
 



 
                        
                        










