Es gibt Dutzende von Standardbefehlszeilenprogrammen, die an einem Deskriptor hängen und auf Eingaben warten können. So arbeiten sie alle. dd
ist einzigartig, da es Ihnen zeigen kann , was sieht ein Beschreiber wie gerade jetzt .
Persönlich verstehe ich den Nutzen der GNU- iflag=fullblock
Option nicht wirklich . Ich meine, Sie können cat
Ihre Eingabe genauso einfach und ohne sich um die I / O-Blockgrößen kümmern zu müssen.
Aber dd
kann einen nehmen Teil eines Baches - und es kann es tun read()
/ write()
auf einer halbwegs modernen Systemgrenzen.
{ ( sleep 1 #don't write() til dd is definitely setup
printf 123 #write() 3 bytes
printf %-30s\\n 456 #write() 31 bytes
printf you\ there\? #write() 10 bytes
)| dd bs=64 count=2 conv=sync| #2 64 byte read()/write() \0-padded blocks
od -vtc #show it with octal radices
} 2>/dev/null #drop stderr
0000000 1 2 3 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000060 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000100 4 5 6
0000120 \n \0
0000140 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000160 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000200
dd
Führt einen Single read()
per Input Block aus. Wenn die Datei , um es versucht , read()
nicht so viele Daten hat , wie es angefordert hat es keine Rolle, - die man read()
zählt als ein Block von Eingang. So funktioniert es - das ist dd
der Hauptnutzen.
Wenn es seine Arbeit erledigt hat, dd
meldet es alle Ein- / Ausgabeblöcke, mit denen es sich befasst hat. Führen Sie den obigen Befehl erneut aus, aber löschen Sie stattdessen stdout ...
dd: warning: partial read (3 bytes); suggest iflag=fullblock
0+2 records in
2+0 records out
128 bytes (128 B) copied, 1.00161 s, 0.1 kB/s
Jedes Mal dd
war read(0,&in,64)
read
kam kurz zurück - weil seine stdin Dateideskriptor nicht genug Bytes hatte warten , dass es seine Anforderung zu erfüllen , wenn sie es geschafft. Also dd
read()
0 vollständige Eingabedatensätze und 2 kurze. Das ist es, was diese Berichte bedeuten.