PDA

View Full Version : Problemi con le funzioni exec


osa
01-11-2005, 17:19
Salve realizzando un piccolo e facile programmino in C su Linux, ho trovato dei problemi
con le funzioni della classe exec, il programma passato come parametro si avvia ma i parametri supplementari non influenzano il programma esempio:

int main(int argc, char *argv[]){
execlp("cp",argv[1],argv[2],(char *) 0);

i parametri argv[1] e argv[2] non sortiscono alcun effetto su cp infatti la copia non è effettuata. Ad esempio ho provato:

int main(int argc, char *argv[]){
execlp("ls",-all,(char *) 0);
Il listato compare, ma non con tutte le informazioni.
Potete aiutarmi?

GioVesas
01-11-2005, 17:51
se non sbaglio execlp e simili sono
execlp(char*cmd,char *argv[0],char ]argv[1],....)
dove cmd è il file o comando da eseguire
argv[0] è la ripetizione dello stesso
e finalmente argv[1].... sono i parametri

GioVesas
01-11-2005, 17:53
Leggendo + attentamente il tuo messaggio:
int main(int argc, char *argv[]){
execlp("ls","-all",(char *) 0);
anche i parametri sono char * quindi vogliono gli ""

bottomap
01-11-2005, 18:33
Ciao,

Oltre alle considerazioni di GioVesas (le stringhe fino a prova contraria si passano tra virgolette):

argv[0] è proprio argv[0]... in pratica come primo e secondo parametro devi passare sempre e comunque il nome dell'eseguibile... nel tuo caso:

execlp("ls","ls","-all",(char *) 0);

Ciaociao :)

osa
01-11-2005, 18:50
Ciao,

Oltre alle considerazioni di GioVesas (le stringhe fino a prova contraria si passano tra virgolette):

argv[0] è proprio argv[0]... in pratica come primo e secondo parametro devi passare sempre e comunque il nome dell'eseguibile... nel tuo caso:

execlp("ls","ls","-all",(char *) 0);

Ciaociao :)
Grazie è stata proprio una dimenticanza
:D