rendered paste body * Systemmanagement und Sicherheit * Uebung 2 * * Philip Schneider * * Beschreibung: Fork, Exec * * Aufruf: ./start programmname argument1 argument2 argument3 * Bsp: ./start ls -l */#include <sys/types.h>#include <unistd.h>#include <stdio.h>/* http://www.pronix.de/pronix-162.html *//* http://www.csl.mtu.edu/cs4411/www/NOTES/process/fork/create.html */int main(int argc, char** argv){ /* Variablen anlegen */ int i; char *argumente[10]; /* char *argumente[argv-2] ist nicht erlaubt, wirft eine warning */ pid_t pid; /* Sohnprozess erzeugen */ /* fork(); */ switch(fork()){ case 0: { /* child code */ printf("Child Code ...\n"); /* ProcessID des Sohnprozesses abfragen */ pid = getppid(); printf("PID = %d\n",pid); /* Array Kopieren um es mit Execvp ausfuehren zu koennen */ /* Kopieren ist notwendig da hier ein komplettes Array uebergeben werden muss */ for (i=0; i<argc; i++) { /* Uebergeht argv[0] (programmname - hier start) und argv[1] (auszufuehrendes Programm) */ argumente[i] = argv[i+2]; } /* Ausfuehren des Programms (argv[1], mit den in argv[2 ... ] stehenden argumenten */ /* return execvp(argv[1],argv+2); */ } break; case -1: { /* fehlerbehandlung */ printf("Fehlerbehandlung ...\n"); } break; default: { /* parent code */ printf("Parent Code ...\n"); } break; } return 0;}