Ciao!
Ho capito che il programma entra prima nel figlio che creo e poi mi fa le stampe TEMPO,COMANDO,PARAMETRI, forse per questo che non mi esegue niente, perchè entrando nel figlio per prima cosa, su agrv[0],non c'è niente, ma ci sarà solo nel figlio ci entra con lo stesso ordine con cui è scritto il progr.
Infatti ho provato a mettere delle stampe di prova dentro il figlio e così ho capito che prima esegue queste istruzioni:
codice:
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]);
}
e poi sale su e mi stampa le seguenti istruzioni:
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]);
argc--;
argv[argc]=NULL;
while(i!=argc){
printf("parametri: %s\n", argv[i]);
i++;
}
invece l'ordine del codice è inverso, perchè prima deve entrare nel while del'fgets() e poi creare il figlio....
cosa devo fare????aiutatemi....