listRun.c
#include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> static void die(const char *msg) { perror(msg); exit(EXIT_FAILURE); } int main(int argc, char *argv[]) { // ./listRun echo aaa bbb ccc ddd // soll aufrufen: // echo aaa // echo bbb // echo ccc // echo ddd for (int i = 2; i < argc; i++) { pid_t p = fork(); if (p < 0) { die("fork"); } if (p == 0) { // Kindprozess execlp(argv[1], argv[1], argv[i], NULL); die(argv[1]); // Im Kindprozess IMMER terminieren! } // Elternprozess // Falls wir die Prozesse nacheinander starten wollen: // Warten, bis der Prozess terminiert int status; waitpid(p, &status, 0); } return EXIT_SUCCESS; }