Dans une boucle d'indice i de 2 à argc-1, on fera un fork. Si cette fonction renvoie 0, cela signifie qu'on est dans le fils. On fera alors un execlp(argv[1], argv[1], argv[i], NULL) qui exécute prog avec l'argument argv[i] en ligne de commande. Attention: argv[1] apparaît deux fois dans execlp (une fois en tant que programme à exécuter et une fois en tant qu'argument 0 du programme à exécuter). De plus la liste d'arguments doit obligatoirement se terminer par NULL.
Pour attendre que tous les fils se terminent, il suffit d'appeler argc-2 fois wait.
Attention: wait peut échouer avec l'erreur EINTR, auquel cas il faut renouveler l'appel.
Quand on tape Contrôle+C, le signal SIGINT est envoyé au processus de premier plan (parexec) ainsi qu'à tous ses fils (prog). Tous ces programmes sont donc interrompus et le shell reprend la main.