Podcast
Questions and Answers
Was passiert, wenn ein Schreib-Ende eines Pipes geschlossen wird?
Was passiert, wenn ein Schreib-Ende eines Pipes geschlossen wird?
- Ein Fehler wird generiert
- 0 wird vom Pipe zurückgegeben (correct)
- Ein Signal wird an den Prozess gesendet
- Der Pipe wird gelöscht
Wofür wird ein Pipe verwendet?
Wofür wird ein Pipe verwendet?
- Nur für Synchronization
- Nur für Signalevents
- Nur für Kommunikation
- Für Signalevents, Synchronization und Kommunikation (correct)
Was ist ein Bezeichner in SYS V IPC?
Was ist ein Bezeichner in SYS V IPC?
- Eine Nummer für eine IPC-Struktur
- Ein Identifier für eine Prozess-ID
- Ein Name für eine IPC-Struktur
- Ein Schlüssel für eine IPC-Struktur (correct)
Was gibt an, wenn ein Lese-Ende eines Pipes geschlossen wird?
Was gibt an, wenn ein Lese-Ende eines Pipes geschlossen wird?
Wie viele Pipes werden für Synchronization verwendet?
Wie viele Pipes werden für Synchronization verwendet?
Was ist ein Ziel von System V IPC?
Was ist ein Ziel von System V IPC?
Wie kann ein Prozess auf eine Nachricht warten?
Wie kann ein Prozess auf eine Nachricht warten?
Was ist ein Ziel von IPC-Strukturen?
Was ist ein Ziel von IPC-Strukturen?
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?
Was gibt die Funktion read zurück?
Was gibt die Funktion read zurück?
Was ermöglicht die Funktion fdopen?
Was ermöglicht die Funktion fdopen?
Warum braucht man Kennungen (IDs) bei der Kommunikation zwischen nicht verwandten Prozessen?
Warum braucht man Kennungen (IDs) bei der Kommunikation zwischen nicht verwandten Prozessen?
Wie kann ein Prozess auf ein existierendes IPC-Objekt zugreifen?
Wie kann ein Prozess auf ein existierendes IPC-Objekt zugreifen?
Was sind die möglichen Rückgabewerte der Funktion msgrcv?
Was sind die möglichen Rückgabewerte der Funktion msgrcv?
Wozu wird der Typ in der Funktion msgrcv verwendet?
Wozu wird der Typ in der Funktion msgrcv verwendet?
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?
Was verhindert die Entstehung von Zombie-Prozessen?
Was verhindert die Entstehung von Zombie-Prozessen?
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?
Was ist der Zweck von Signalhandlern?
Was ist der Zweck von Signalhandlern?
Was ist der Unterschied zwischen Pipes und FIFOS?
Was ist der Unterschied zwischen Pipes und FIFOS?
Was ist der Zweck der Funktion alarm()?
Was ist der Zweck der Funktion alarm()?
Was passiert, wenn ein Vaterprozess waitpid() mit der Option pid == -1 aufruft?
Was passiert, wenn ein Vaterprozess waitpid() mit der Option pid == -1 aufruft?
Was ist der Unterschied zwischen SIG_IGN und SIG_DFL?
Was ist der Unterschied zwischen SIG_IGN und SIG_DFL?
Was ist der Zweck der Funktion kill()?
Was ist der Zweck der Funktion kill()?
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.