为什么dd从管道里读取的数据不足就会直接退出?

编程语言 2026-07-08

我想读取64个块,但只拷贝了60个块

$ cat /dev/zero | tr '\0' '\377' | dd bs=10000 count=64 of=mtd
60+4 records in
60+4 records out
619824 bytes (620 kB, 605 KiB) copied, 0.000470952 s, 620 MB/s

解决方案

管道经常会返回短读,因此你会看到60+4。

因此dd实际读取了64个块,但只有60个是完整块,4个是短读。

一个简单的修复方法是持续读取,直到每个块都被完全填满。

按照下面的方式添加iflag参数,应该能起作用。

dd bs=10000 count=64 iflag=fullblock of=mtd

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章