Allora io devo leggere un file di testo nel quale ci sono righe così
formate:
"30 comando parametri", e devo far eseguire i vari comandi quando il
tempo di quella riga scade, per esempio se ho una riga : 30 ls -a,
vuol dire che dopo 30 sec dall'avvio del programma devo eseguire ls
-a.
Il codice che allego mi stampa tutto perfettamente, ma quando deve eseguire il comando non lo fa, cioè da quello che ho capito in argv[0] non c'è nessun comando che può eseguire.Ma la cosa strana è che nello schermo, il pritnf di argv[0] mi dà esattamente il comando che deve leggere.
Per favore aiutatemi, dov'è l'errore??
come faccio??
ecco il codice:
/**Leggo riga per riga con fgets()**/
s=dim;
while((fgets(s,80,fp))){
argv=split_arg(s," ",&argc);
i = 1;
temp = ritornaTempo(argv,argc);
printf("Tempo: %d\n", temp);
printf("Comando: %s\n", argv[0]); //qui mi stampa esattamente il
comando
argc--;
argv[argc]=NULL;
while(i!=argc){
printf("parametri: %s\n", argv[i]);
i++;
}
}
IFERROR(pid=fork(),"generando il figlio");
if(pid==0){
/*siamo nel figlio*/
IFERROR(execvp(argv[0],argv),"ERRO NELLA EXEC");
/*non esegue niente perchè in argv[0] non c'è nessun comando*/
printf("non ho potuto eseguire %s\n", argv[0]);
}
IFERROR(letti, "main: Errore in lettura");
IFERROR( close(fd), "main: Errore in chiusura");
return 0;
}
int ritornaTempo(char **argv,int argc){
int i = 1;
int temp = atoi(argv[0]);
while((i-1)!=argc){
argv[i-1] = argv[i];
i++;
}
return temp;
}
grazie!!