Universität Ulm - Sektion Angewandte Informationsverarbeitung
1. Übungsblatt (28.04.98 bis 07.05.98)
zur Vorlesung Systemnahe Software 2 (SS 98)

Tutoren sind auch nur Menschen! Sie wissen leider nicht alles! Helfen Sie den Tutoren, bessere Menschen zu werden!

Aufgabe 1 (3 Punkte)

Erklären Sie Ihrem Tutor, Ihrer Tutorin :-), was das folgende C-Programm kill_me_now.c genau macht (man setpgid !!!):

int main(void

{   setpgid(0, getppid());

    kill(0, 9);

}

Gibt es einen Unterschied, wenn man es mit nohup kill_me_now startet?

Aufgabe 2 (3 Punkte)

Erklären Sie Ihrem Tutor :-), Ihrer Tutorin, was das folgende C-Programm kill_me_not.c genau macht:

#include <stdio.h>

int main(void)

{   FILE *fp;

    kill(getppid(), 9);

    if (fp=fopen("test", "w"))

}

Gibt es einen Unterschied, wenn man es mit nohup kill_me_not startet? Begründung!

Aufgabe 3 (4 Punkte)

Es ist manchmal "als Programm" ganz nützlich zu wissen, ob die Standardeingabe vom Terminal aus erfolgt, oder, ob die Eingabe beim Start des Programms von der Shell an eine Datei vergeben wurde. Schreiben Sie ein kleines C-Progrämmchen is_redirected.c, das lediglich erkennt und ausgibt, ob die Standardeingabe das Terminal oder eine Datei ist.

thales$ is_redirected

Lese vom Terminal

thales$ is_redirected <is_redirected.c

Lese von Datei

Hinweiskette:

Soft 1, Skript Seite 200; stdin (Filedeskriptor 0) ist ein Charakter-Device; Soft 1, Übungsblatt Nr. 10, man fstat()