Betrachten Sie den folgenden Befehl :
bash -c "echo x; cat 1" | tee 1.
Mein Verständnis ist, dass es in eine neue Shell xverzweigen, in stdout schreiben, file 1 not foundin stderr schreiben , die Steuerung beenden und an den übergeordneten Prozess zurückgeben und xin stdout und in schreiben würde 1. Daher würde ich erwarten, dass die endgültige Ausgabe xerfolgt und die Datei 1genau die Zeichenfolge enthält x.
Dies ist jedoch nicht der Fall. Tatsächlich 1enthält die Datei normalerweise mindestens zwei Instanzen von xund manchmal Tausende von Zeilen von xs. Bei einem Batch-Test, bei dem der Befehl zehntausend Mal ausgeführt wurde, xbetrug die durchschnittliche Anzahl der in die Datei geschriebenen s 52,3 und der Median 1. Welcher Mechaniker verursacht dies? Welche Wahrscheinlichkeitsverteilung modelliert dieses Verhalten? Ich vermute, dass es bedingt geometrisch und ansonsten einheitlich ist.
xbetrug die durchschnittliche Anzahl der in die Datei geschriebenen s 4,35. Ich denke, es wird sehr von der Maschinenlast abhängen.
teedie Datei zum Schreiben geöffnet wurde, bevorcatsie zum Lesen geöffnet wurde, enthält die Datei möglicherweise vielex-es. In diesem Fall würde die "Schleife" immer dann enden, wenn dascatLesen schneller als dasteeSchreiben erfolgt und das Ende der Datei erreicht.