ファイル記述子0からファイルにnバイトを読み取るには?バイトはどんな値でもかまいません。

ファイル記述子0からファイルにnバイトを読み取るには?バイトはどんな値でもかまいません。

ファイルから特定のバイト数を読み取り、fd0それをファイルに書き込む必要があります。バイトは任意の値を持つことができます。

ddバイト単位で止まるので書けないと思いますEOF。私はキーボードではないのでif=/dev/stdin動作しません。fd0

答え1

入力ファイルが提供されていない場合、dd(および他の多くのunixコマンド)はデフォルトでstdinから入力を取得します。

stdinはキーボードである必要はなく、しばしばそうではありません。

ddコマンドは、特にバイナリデータをコピーするために使用されます。それ以外の場合でも、EOFUnixではバイトではありません。そのソースのデータがもう存在しないことを示すファイル記述子の条件。

キーボード(またはもっと重要なのはtty)では、Ctrl-D制御文字はEOFではありませんが(デフォルトでは)ttyに入力Backspaceバッファから文字を削除する方法と同様にEOF条件を入力させます。これは、ttyが「生」モードではなく「cooked」モードにあり、EOFの制御文字がttyから変更できる場合にのみ意味があります。

nバイト(ここでnは数字)を読み取る完全に実現可能なソリューションは次のとおりです。dd count=1 bs=n

キーボードで複数行を入力するか、すべてのデータを送信する前に一時停止がある場合、ddはそれをブロック境界として解釈します。追加すると、iflag=fullbockddはブロックを終了する前に合計10バイトを待ちます。

関連情報