Podcast
Questions and Answers
Was passiert, wenn ein Schreib-Ende eines Pipes geschlossen wird?
Was passiert, wenn ein Schreib-Ende eines Pipes geschlossen wird?
Wofür wird ein Pipe verwendet?
Wofür wird ein Pipe verwendet?
Was ist ein Bezeichner in SYS V IPC?
Was ist ein Bezeichner in SYS V IPC?
Was gibt an, wenn ein Lese-Ende eines Pipes geschlossen wird?
Was gibt an, wenn ein Lese-Ende eines Pipes geschlossen wird?
Signup and view all the answers
Wie viele Pipes werden für Synchronization verwendet?
Wie viele Pipes werden für Synchronization verwendet?
Signup and view all the answers
Was ist ein Ziel von System V IPC?
Was ist ein Ziel von System V IPC?
Signup and view all the answers
Wie kann ein Prozess auf eine Nachricht warten?
Wie kann ein Prozess auf eine Nachricht warten?
Signup and view all the answers
Was ist ein Ziel von IPC-Strukturen?
Was ist ein Ziel von IPC-Strukturen?
Signup and view all the answers
Was ist der Rückgabewert der Funktion open, wenn der Pfad existiert und die Datei nicht geöffnet werden kann?
Was ist der Rückgabewert der Funktion open, wenn der Pfad existiert und die Datei nicht geöffnet werden kann?
Signup and view all the answers
Was gibt die Funktion read zurück?
Was gibt die Funktion read zurück?
Signup and view all the answers
Was ermöglicht die Funktion fdopen?
Was ermöglicht die Funktion fdopen?
Signup and view all the answers
Warum braucht man Kennungen (IDs) bei der Kommunikation zwischen nicht verwandten Prozessen?
Warum braucht man Kennungen (IDs) bei der Kommunikation zwischen nicht verwandten Prozessen?
Signup and view all the answers
Wie kann ein Prozess auf ein existierendes IPC-Objekt zugreifen?
Wie kann ein Prozess auf ein existierendes IPC-Objekt zugreifen?
Signup and view all the answers
Was sind die möglichen Rückgabewerte der Funktion msgrcv?
Was sind die möglichen Rückgabewerte der Funktion msgrcv?
Signup and view all the answers
Wozu wird der Typ in der Funktion msgrcv verwendet?
Wozu wird der Typ in der Funktion msgrcv verwendet?
Signup and view all the answers
Was passiert, wenn die Queue voll ist und die Funktion msgsnd aufgerufen wird?
Was passiert, wenn die Queue voll ist und die Funktion msgsnd aufgerufen wird?
Signup and view all the answers
Was verhindert die Entstehung von Zombie-Prozessen?
Was verhindert die Entstehung von Zombie-Prozessen?
Signup and view all the answers
Was passiert, wenn ein Vaterprozess wait(pid) aufruft und das Kindprozess bereits beendet wurde?
Was passiert, wenn ein Vaterprozess wait(pid) aufruft und das Kindprozess bereits beendet wurde?
Signup and view all the answers
Was ist der Zweck von Signalhandlern?
Was ist der Zweck von Signalhandlern?
Signup and view all the answers
Was ist der Unterschied zwischen Pipes und FIFOS?
Was ist der Unterschied zwischen Pipes und FIFOS?
Signup and view all the answers
Was ist der Zweck der Funktion alarm()?
Was ist der Zweck der Funktion alarm()?
Signup and view all the answers
Was passiert, wenn ein Vaterprozess waitpid() mit der Option pid == -1 aufruft?
Was passiert, wenn ein Vaterprozess waitpid() mit der Option pid == -1 aufruft?
Signup and view all the answers
Was ist der Unterschied zwischen SIG_IGN und SIG_DFL?
Was ist der Unterschied zwischen SIG_IGN und SIG_DFL?
Signup and view all the answers
Was ist der Zweck der Funktion kill()?
Was ist der Zweck der Funktion kill()?
Signup and view all the answers
Study Notes
Prozesse und Signalhandling
- Ein Zombie-Prozess entsteht, wenn ein Prozess terminiert und sein Elternprozess nicht auf seinen Exit-Status wartet.
- Ein Signalhandler kann eingerichtet werden, um Signale abzufangen und nicht immer fragen zu müssen, ob ein Signal empfangen wurde.
- SIG_IGN ignoriert Signale, während SIG_DFL die Default-Aktion für die meisten Signale ist, die den Prozess beendet.
- Signale können mit der kill-Funktion an einen Prozess gesendet werden oder mit raise an den eigenen Prozess.
Pipes und Nachrichtenqueuing
- Pipes können nur zwischen Prozessen eingerichtet werden, die einen gemeinsamen Vorfahren haben.
- Pipes sind halbduplex, d.h. Daten können nur in eine Richtung fließen.
- FIFOS können zwischen beliebigen Prozessen eingerichtet werden und sind Voll-Duplex.
- Stream Pipes sind eine Art von FIFOS und bieten eine Verbindung zwischen Low-Level-IO und High-Level-IO.
Dateioperationen
- Die open-Funktion gibt einen Filedeskriptor zurück, der auf eine Datei zeigt.
- Die read-Funktion gibt die Anzahl der gelesenen Bytes zurück und kann 0 oder -1 zurückgeben, je nachdem, ob der Lesezeiger am Dateiende steht oder ein Fehler auftritt.
- Die lseek-Funktion setzt den Lese-/Schreibzeiger einer Datei neu.
- Die fdopen-Funktion gibt einen Filepointer zurück, der auf einen Filedeskriptor zeigt, und ermöglicht die Verwendung von High-Level-IO-Funktionen.
Interprozesskommunikation
- Alle IPC-Objekte außer Pipes können zwischen nicht verwandten Prozessen kommunizieren.
- Eine Kennung wird vom System nach der Erstellung eines IPC-Objekts vergeben und kann von anderen Prozessen verwendet werden, um auf das Objekt zuzugreifen.
Message Queues
- Nachrichten müssen nicht in der Reihenfolge gelesen werden, in der sie gespeichert wurden.
- Durch Angabe eines Typs in msgrcv können Nachrichten "ausgelassen" werden.
- Die flags msgsnd und msgrcv können verwendet werden, um die Warteschlange zu blockieren oder eine Nachricht zu senden.
System V IPC
- System V IPC, auch XSI IPC genannt, bietet IPC-Strukturen für Nachrichtenqueues, Semaphore und gemeinsam genutzte Speichereinheiten.
- Jede Struktur wird durch einen Bezeichner dargestellt, der zurückgegeben wird, wenn die Struktur erstellt wird.
- Ein key muss spezifiziert werden, wenn eine IPC-Struktur erstellt wird, und matching keys verweisen auf matching-Objekte.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Lernen Sie, wie Sie Zombie-Prozesse verhindern, indem Sie Signalhandler für SIGCHLD einrichten, zweimal fork aufrufen und die Funktionen wait() und waitpid() nutzen.