Si consideri il seguente comando:
bash -c "echo x; cat 1" | tee 1
.
La mia comprensione è che sarebbe fork su una nuova shell, scrivere x
su stdout, scrivere file 1 not found
su stderr, uscire e restituire il controllo al processo genitore e scrivere x
su stdout e su 1
. Quindi, mi aspetto che l'output finale sia x
e il file 1
contiene esattamente la stringa x
.
Tuttavia, questo non è il caso. In realtà, il file di 1
solito contiene almeno due istanze di x
, e talvolta migliaia di righe di x
s. In un test batch di esecuzione del comando diecimila volte, il numero medio di x
s scritte nel file era 52.3 e la mediana era 1. Quale meccanico sta causando questo? Quale distribuzione di probabilità modella questo comportamento? Sospetto che sia condizionatamente geometrico e altrimenti uniforme.
x
scritti nel file era di 4,35. Immagino che dipenderà molto dal carico della macchina.
tee
il file è stato aperto per la scrittura prima dicat
aprirlo per la lettura, è possibile che siano presenti moltix
file nel file. In tal caso, il "ciclo" terminerebbe ogni volta checat
legge più velocemente delletee
scritture, raggiungendo la fine del file.