#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <sys/wait.h>

// Programma che implementi una shell con il comando da eseguire
// competo di parametri, passato al programma dagli argomenti.
// Usa robe strane, aiutato da chatgippi.

int main() {
    char comando[100];
    char *args[20];
    pid_t pid;

    while (1) {
        printf("$> ");
        fflush(stdout);

        if (!fgets(comando, sizeof(comando), stdin))
            break;

        comando[strcspn(comando, "\n")] = 0;

        int i = 0;
        args[i] = strtok(comando, " ");
        while (args[i] != NULL && i < 19) {
            i++;
            args[i] = strtok(NULL, " ");
        }

        if (strcmp(args[0],"exit") == 0)
            return 0;

        pid = fork();
        if (pid < 0) {
            printf("Errore nella creazione del figlio.");
            return -1;
        }

        if (pid == 0) { // Figlio
            execvp(args[0], args);
            return 0;
        }

        else if (pid > 0) {  // Padre
            wait(NULL);
            //printf("Programma Terminato\n");
        }
    }

    return 0;
}
