Der Name der Pipe ist FIFO. Es ist aus.
ls -l | grep keyword
In ist | die Pipe, und der ihm gegebene globale Name des Dateisystems ist das FIFO. Die Eigenschaften sind die gleichen wie bei Rohren. Im obigen Beispiel
Es wird eine Bewegung wie. Es blockiert mit open (), nicht mit read () oder write (). Dies ist in japanischen Manpages geschrieben, aber schwer zu verstehen. Mit anderen Worten, das ist es.
Dateien, die nicht durchsucht werden können (Pipes und FIFOs), beginnen an der aktuellen Position zu lesen. Wenn keine Daten vorhanden sind, werden sie als EOF betrachtet und geben 0 zurück.
Daher blockiert read () nicht. Normalerweise ist dies kein Problem. Wenn Sie jedoch einen Thread für die Kommunikation zwischen Prozessen einrichten und darauf warten möchten, dass Daten in einer Schleife eintreffen, müssen Sie ihn mit open () blockieren, um eine CPU-Verschwendung zu vermeiden. Als Mensch möchte ich jedoch nicht in jeder Schleife öffnen () / schließen (). Am besten blocken Sie mit read ().
Die POSIX-Nachrichtenwarteschlange ist eine Warteschlange, in der eine begrenzte Anzahl von Nachrichten fester Größe gespeichert werden kann. Da das Blockierungsattribut zum Zeitpunkt der Erstellung hinzugefügt wird, wird es blockiert, bis die Nachricht eintrifft, auch wenn die Warteschlange empfangen wird (wenn es sich um eine Blockierungswarteschlange handelt).
Daher ist es für die Verarbeitung geeignet, die auf das Eintreffen einer Nachricht in einer Thread-Schleife wartet. Es generiert kein SIGPIPE wie eine Pipe und verliert keine Daten, wenn beide Enden des FIFO geschlossen sind (es behält Daten bis zum Herunterfahren bei, da dies die Lebensdauer des Kernels ist).
Es scheint, dass es andere Methoden der prozessübergreifenden Kommunikation gibt, wie Semaphos, Signale und gemeinsam genutzten Speicher, aber ich denke, wenn Sie es zum Zweck des Datenaustauschs verwenden, handelt es sich um ein FIFO, eine Warteschlange oder einen Domänensocket. Ich denke, jeder hat seine Vor- und Nachteile, deshalb möchte ich sie in Zukunft zusammenfassen.
Recommended Posts