如何从文件描述符 0 读取 n 个字节到文件?字节可以是任何值

如何从文件描述符 0 读取 n 个字节到文件?字节可以是任何值

我需要从文件中读取特定数量的字节fd0并将其写入文件中。字节可以具有任何值。

我认为我无法使用,dd因为它停在EOF字节处。由于我的不是键盘,if=/dev/stdin因此无法使用。fd0

答案1

当没有提供输入文件时,dd(以及许多其他 unix 命令)默认从 stdin 获取输入。

stdin 不一定是键盘,而且通常也不是。

dd 命令专门用于复制二进制数据。即使不是,EOF也不是 unix 中的一个字节。它是文件描述符上的一个条件,指示该源不再有数据。

从键盘(或者更重要的是,tty),Ctrl-D控制字符不是 EOF,但(默认情况下)导致 tty 进入 EOF 条件,类似于如何从Backspace输入缓冲区中删除字符。请注意,这仅在 tty 处于“cooked”模式而不是“raw”模式时才有意义,并且可以在 tty 中更改 EOF 的控制字符。

读取 n 个字节(其中 n 是一个数字)的完美可行的解决方案是dd count=1 bs=n

请注意,如果您从键盘输入多行或在发送所有数据之前有暂停,则 dd 会将其解释为块边界。添加iflag=fullbock将强制 dd 在结束块之前等待完整的 10 个字节。

相关内容