Gibt es eine Möglichkeit, die Rohrkapazität von Rohren festzulegen, die in einem Bash-Skript (oder einem anderen Shell-Skript) definiert sind? Nehmen Sie z
cmd1 | cmd2
In neueren Linux-Versionen ist die Pipe-Kapazität standardmäßig auf 64 KB eingestellt. Ich weiß, dass ich die zwischen den beiden Prozessen "gepufferte" Datenmenge auf zwei Arten steuern kann:
- Verwenden von
buffer(1)
: zcmd1 | buffer | cmd2
- Verwendung
fcntl(2)
mit derF_SETPIPE_SZ
Flagge von innencmd1
odercmd2
Jede Lösung hat Nachteile: buffer
Kann nur zum Erhöhen des Puffers verwendet werden; Für Schreibvorgänge über die Standard-Pipe-Kapazität muss der Downstream-Befehl weiterhin aktiviert werden. fcntl
kann, soweit ich weiß, nur von innen cmd1
oder von innen aufgerufen werden cmd2
.
Meine Frage ist: Gibt es eine Möglichkeit, wenn die Shell das Rohr erstellt, in der Shell anzugeben, wie viel Kapazität das Rohr haben soll?