Wenn Sie read() syscall in Linux zum Lesen aus welcher Quelle (Datei, Socket, Pipe) verwenden, gibt es eine minimale Datenmenge, die zurückgegeben werden kann (im Blockiermodus)? Oder kann der Syscall sogar 1 Byte zurückgeben?Linux read() minimale Datenmenge
Wenn ich ein einzelnes int (4 oder 8 Bytes) aus einer Pipe lesen möchte, muss ich noch den Rückgabewert von read() überprüfen, um zu sehen, ob ich weniger als sizeof (int) Bytes erhielt?
In der Praxis ist es nicht effizient, einen 'read (2)' syscall für jedes Wort oder Byte zu machen. Sie sollten Ihre Lesevorgänge zwischenspeichern (mit einer Puffergröße von beispielsweise 1K - 128K Byte) oder eine Bibliothek (z. B. '' mit 'fread') verwenden, die die Pufferung für Sie durchführt. –
Ich möchte es für IPC verwenden, wo ich nur einen int zu einem anderen Prozess senden muss. – kuba
Aber Sie können immer noch eine größere Menge lesen. Es kann Fälle geben, in denen Sie mehr als einmal int lesen müssen (z. B. wenn Ihr Prozess nicht oft genug geplant wurde, weil das System zu beschäftigt ist und/oder der andere Schreibprozess Daten mit hoher Geschwindigkeit ausgibt) das Rohr). –