Betriebssysteme // Kapitel 5: IPC (Signale/Pipes)


Warum braucht man Inter-Prozess Kommunikation (IPC)?
Aufgaben werden auf verschiedene Prozesse aufgeteilt (z.B. Drucker-Spooler), die standardmäßig nicht kommunizieren können.
Nenne die 4 in der Vorlesung genannten IPC-Methoden.
1. Signale
2. Pipes
3. Shared-Memory
4. Message-Queues
Was sind Signale (IPC)?
Einfache, asynchrone Kommunikationsmöglichkeit. Signalisieren nur das *Auftreten* von Zuständen (z.B. SIGINT, SIGKILL, SIGCHLD, SIGSEGV).
Wie sendet man ein Signal in der Shell?
Mit dem `kill` Befehl. Z.B. `/bin/kill -9 $PID` (sendet SIGKILL). `/bin/kill -L` listet alle Signale auf.
Wie sendet man ein Signal in C?
Mit der Funktion `kill(pid_t pid, int sig)`. Z.B. `kill(53466, 9);`
Wie kann man das Standardverhalten von Signalen in C ändern?
Man programmiert einen 'Signal-Handler' (eine Funktion) und registriert ihn mit `signal()` oder (besser) `sigaction()`.
Was macht eine Pipe `|` in der Shell?
Leitet die Standard-Ausgabe (stdout) des ersten Prozesses an die Standard-Eingabe (stdin) des zweiten Prozesses weiter. Z.B. `find . | grep 'txt'`
Wie erstellt man eine Pipe in C?
Mit `pipe(int fildes[2])`. Dies erstellt zwei File-Deskriptoren (einen zum Lesen: `fildes[0]`, einen zum Schreiben: `fildes[1]`).