Program treba da radi u beskonačnoj petlji. U svakom koraku petlje čita se ulazna naredba. Onda radiš leksičku analizu te naredbe i pozivaš odgovarajuće funkcije (ne programe). Korišćenje system funkcije je ovde varanje jer system funkcija koristi već gotov shell da izvršava druge programe.
Dakle u pseudo kodu:
Code:
int obrisi(char *arg) {
// proveri da li datoteka *arg postoji funkcijom stat i
// pozovi brisanje uz proveru povratne vrednosti
}
...
int main(int argc, char *argv[]) {
char line[1024], *tmp;
while(1) {
char *currdir;
currdir = getcwd(NULL, 0);
printf("%s: ", currdir);
free(currdir);
fflush(stdout);
if( (tmp = fgets(line, 1023, stdin)) == NULL) {
break;
// nema nove komande ili je doslo do greske,
// opciono proveriti errno i ispisati gresku
}
// sada analiziraj unos u line i pozivaj odgovarajuce ranije napisane funkcije
// korisna funkcija je strtok iz string.h
}
return 0;
}
Korisna pomoć pri radu su ti man stranice, ako ih nemaš instalirane na računaru možeš na google-u da kucaš "man <ime funkcije>", npr.
man strtok. Od literature preporučujem ti
APUE knjigu, ako je nema u biblioteci fakulteta, može se pronaći kopija na Internetu.