如果我写入磁盘以外的设备会发生什么?

如果我写入磁盘以外的设备会发生什么?

我知道,我可以仅使用 Linux 中的命令写入硬盘dd,例如dd if=/dev/zero of=/dev/sdb

由于在 Linux 中每个设备都表示为文件,我想知道如果我有意或无意地写入音频设备或任何其他设备会发生什么?

答案1

取决于设备。
当用户程序被授予访问权限时,它会写入设备的数据界面。
还有一个控制设备接口,由设备驱动程序或读写控制()来自用户程序的调用。

通常情况下数据写入设备不会影响其控制但也有例外,例如ESCape 控制序列(用于打印机和显示终端)。此类设备具有简单的或没有硬件控制接口(例如,可能是 3 线串行连接),并且共享数据控制通道是必需的。

此类设备通常使用 ASCII 编码数据,以及控制序列使用 ASCII ESC 字符作为前缀。二进制数据(而不是 ASCII 文本)可能偶尔包含十进制值 27 的字节,因此后续字节将被视为控制序列。太垃圾了数据发送到这样的设备将会产生不可预测的操作。

其他设备(如音频设备和存储驱动器)具有更复杂的控制接口或协议,用于共享数据&控制通道(例如,ATA 驱动器的 ATAPI 协议)。 数据写入设备始终被明确标记为并处理为数据,并且不会影响设备的运行。当然,发送垃圾数​​据会破坏磁盘驱动器上某处存储的数据。或者向连接到音频设备的扬声器输出高转换速率(例如方波)。

写入/dev/zero音频设备可能会给扬声器产生最大负直流电压,听起来像一声闷响然后就没声音了。(DAC 的值通常使用偏置表示;0x8000 是零伏的 16 位值。)长时间输出可能会使音频放大器和扬声器的音圈过热。

访问设备固件(用于重写)通常是一项受保护的操作。对于字符堵塞设备。

前面的评论指的是实际的硬件设备。将垃圾写入特殊设备文件(如)/dev/mem/dev/ports是不可预测的,因此不建议这样做。

答案2

您可能会删除数据、损坏内存、在声音设备上播放一些垃圾等等……这不是您真正想做的事情。

例如:

cat /dev/urandom > /dev/audio

会在音频设备上播放一些随机噪音(至少在过去是这样的)。

相关内容