#include // exec, fork #include // pid_t #include // perror, printf #include // wait #include // exit int main () { pid_t child_pid = fork(); if(child_pid < 0) { // Fehler beim Forken perror("fork"); exit(1); } else if(child_pid == 0) { // Ich bin der Kindprozess if(execlp("ls", "ls", "-l", NULL) < 0) { perror("exec"); exit(2); } } else { // Ich bin der Elternprozess pid_t wait_pid = wait(NULL); if(wait_pid < 0) { perror("wait"); exit(3); } else if(wait_pid == child_pid) { // Alles OK, wir haben die PID des gerade erzeugten Kindes bei wait() // zurueckbekommen. return 23; } else { printf("Unbekannte PID %d von wait() bekommen, habe %d erwartet!\n", wait_pid, child_pid); exit(4); } } // Wird sowieso nie erreicht: return 23; }