
  /**************************************************************/
  /*                                                            */
  /*      UNIX 1 / WS 92/93       Gruppe  ux803                 */
  /*      6. Uebung - theoretische Aufgaben                     */
  /*                                                            */
  /*      Vorname     Name        Matrikelnr.                   */
  /*     ---------   -------     -------------                  */
  /*      Dietmar     Dierks        125761                      */
  /*      Roman       Czyborra      127221                      */
  /*      Torsten     Buller        117894                      */
  /*      Gerasimos   Paliatsaras   140956                      */
  /*                                                            */
  /**************************************************************/

Aufgabe 1
=========
Folgendermassen wird eine zyklische Kommunikation A->B->C->A eingerichtet.
Mit unbenannten Pipes:
{
	int AB[2], BC[2], CA[2];

	pipe (AB); pipe (BC); pipe (CA);
	if (fork()) { 
		close (AB[0]); close (BC[0]); close (BC[1]); close (CA[1]);
		... /* Prozess A */
	} else if (fork ()) { 
		close (BC[0]); close (CA[0]); close (CA[1]); close (AB[1]);
		... /* Prozess B */
	} else {
		close (CA[0]); close (AB[0]); close (AB[1]); close (BC[1]);
		... /* Prozess C */
  	}
}
Oder mit benannten Pipes:
{
	mkfifo ("AB");
	open ("AB", O_WRONLY);
	while (open ("CA", O_RDONLY) == -1) sleep (1);
	... /* Prozess A (B und C analog) */
}


Aufgabe 2
=========
Ein Signalhandler ist eine Signalbehandlungsroutine, die
beim Auftreten eines bestimmten Signalereignisses angesprungen
werden soll, aehnlich wie ein Interrupthandler.
Installiert wird dieser Verweis am einfachsten mit der 
Bibliotheksroutine signal (<Signalnummer>, <&Behandlungsroutine>)
Fork vererbt installierte Handler, Exec vernichtet sie.

Aufgabe 3
=========
Wie koennte ein Prozess verhindern, dass Ctrl-C ihn abbricht?
1. Mit signal (SIGINT, SIG_IGN)
2. Mit einem eigenen Handler fuer SIGINT
3. Indem er der Taste Ctrl-C die Bedeutung entzieht:
{
	struct termio setting;
	ioctl (stdin, TCGETS, &setting);
	setting.c_cc[VINTR]= 0;
	ioctl (stdin, TCSETS, &setting);
} 

