Scusa non avevo capito !
#include <stdio.h>
#include <sys/types.h>
void analizza(char *line, char **argv)
{
while (*line != '\0') { /* se la stringa presa in considerazione non rappresenta la fine della riga */
while (*line == ' ' || *line == '\n'){
*line = '\0'; /* replace white spaces with 0 */
line++;
}
*argv = line; /* save the argument position forse è *argv=*line; */
argv++;
while (*line != '\0' && *line != ' ' && *line != '\n')
line++; /* skip the argument until ... */
}
*argv = '\0'; /* mark the end of argument list */
}
void execute(char *argv) {
pid_t pid;
int stato,indice=1;
FILE *stream, *fopen();
if ((pid = fork()) < 0) {
printf("*** ERRORE: creazione processo figlio fallita\n");
exit(1);
}
else if (pid == 0) { /* processo figlio */
if (execvp(*argv, argv) < 0) { /* esegue il comando */
printf("*** ERRORE: esecuzione fallita\n");
exit(1);
}
}
else {
stream = fopen("out.%d", indice,"r,w") ; // apro il file in letture e scrittura
indice++;
*stream = stdout; // fprint( *stream, stdout)
/* processo padre */
while (wait(&stato) != pid) {
/* aspetta il completamento del processo figlio */
}
}
}
void main(void) {
char line[1024]; /* input */
char *argv[64]; /* gli argomenti presenti nella linea di comando */
int continua=1;
while (continua) {
printf("Inserisci il comando da eseguire: ");
gets(line); /* leggi la linea di comando */
printf("\n");
analizza(line, argv); /* analizza line */
if (strcmp(argv[0], "exit") == 0) /* è una "exit"? */
exit(0); /* esegui exit */
else {
if(strcmp(argv[0], "\0")
continua=0; // oppure exit(0);
else
execute(argv); /* otherwise, execute the command */
}
}
}