All pastes #513773 Raw Edit

fork()

public c v1 · immutable
#513773 ·published 2007-05-27 12:27 UTC
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;}