Dit is de opdracht cpipe die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
cpipe - kopieer stdin naar stdout terwijl je bytes telt en de voortgang rapporteert
KORTE INHOUD
cpijp [-b bsize] [-vt] [-vr] [-vw] [-ngr] [-s snelheid]
OPTIES
-b buffergrootte in kB,
1 Int-waarde tussen 1 en oo.
Standaard: `128'
-vt doorvoer weergeven.
-vr toon leestijden.
-vw toon schrijftijden.
-ngr niet-hebzuchtig lezen. Forceer geen volledige buffer bij het lezen voordat u begint met schrijven.
-s doorvoersnelheidslimiet in kB/s,
1 Dubbele waarde tussen 1 en oo.
PRODUCTBESCHRIJVING
Cpijp kopieert zijn standaardinvoer naar zijn standaarduitvoer terwijl hij de tijd meet die daarvoor nodig is
om een invoerbuffer te lezen en een uitvoerbuffer te schrijven. Als een of meer van de -vx opties is
gegeven, worden statistieken van de gemiddelde doorvoer en het totale aantal gekopieerde bytes afgedrukt
naar de standaardfoutuitvoer.
Niet Hebzuchtig Lees
Normaal gesproken doet cpipe zijn best om zijn buffer (option -b) voordat het begint
schrijven. In sommige situaties, bijvoorbeeld als u via cpipe met een interactief programma praat,
hierdoor loopt de communicatie vast: het programma wacht op invoer die het nooit zal zien,
omdat de invoer vastzit in de buffer van cpipe. Maar cpipe zelf zal niet meer input zien
voordat het programma niet reageert.
Om dit te omzeilen, probeer het te gebruiken -ngr. Bij het uitvoeren van een leesoproep wordt cpipe dan tevredengesteld als
zodra het minstens één byte krijgt. In plaats van de buffer te vullen, stopt het met lezen en
schrijft wat het ook naar de uitvoer krijgt. Houd er echter rekening mee dat de doorvoermetingen dat wel zullen doen
minder exact zijn als het aantal overgedragen bytes in één lees/schrijf-paar klein wordt,
omdat cpipe relatief meer tijd zal besteden aan het werken aan elke byte.
Het beperken van Doorvoer
Als er een doorvoerlimiet is opgegeven bij optie -s, cpijp gesprekken jij slaapt(3) er tussenin
buffers kopiëren, waardoor de duur van een lees-/schrijfcyclus kunstmatig wordt verlengd. Sinds
op de meeste systemen is er een bepaalde minimale tijd dat usleep() slaapt, bijvoorbeeld 0.01s
onmogelijk om hoge limieten te bereiken met een kleine buffergrootte. In dit geval verhoogt u de
buffergrootte (optie -b) kan helpen. Houd er echter rekening mee dat dit de doorvoer beperkt
alleen gemiddeld. Elke afzonderlijke buffer wordt zo snel mogelijk gekopieerd.
VOORBEELD
Het bevel
tar cCf / -usr | cpipe -vr -vw -vt > /dev/null
resulteert in een uitvoer zoals
...
in: 19.541 ms bij 6.4 MB/s (gemiddeld 4.7 MB/s) 2.0 MB
uit: 0.004 ms bij 30.5 GB/s (gemiddeld 27.1 GB/s) 2.0 MB
tot: 19.865 ms bij 6.3 MB/s (gemiddeld 4.6 MB/s) 2.0 MB
...
De eerste kolom toont de tijd die nodig is om één gegevensbuffer te verwerken (standaard 128 kB).
De leesaanroep duurde 19.541 ms, de schrijfaanroep naar /dev/null duurde slechts 0.004 ms en vanaf de
begin van het lezen tot het einde van het schrijven, het duurde 19.865 ms.
De tweede kolom toont het resultaat van het delen van de buffergrootte (standaard 128 kB) door de
maal in de eerste kolom.
De derde kolom bevat het gemiddelde over alle gemeten waarden vanaf het begin van de
programma.
Ten slotte laatste kolom toont het totale aantal overgedragen bytes, wat natuurlijk het geval is
hetzelfde voor lezen en schrijven.
Gebruik cpipe online met behulp van onworks.net-services