標準入力バッファとは何ですか?

標準入力バッファとは何ですか?

「Kubernetes in Action」という本を読みながら、次の抜粋(124ページ)を見つけました。

リスト 5.2 コンテナに対する標準入力の有効化

apiVersion: v1
kind: Pod
metadata:
  name: kiada-stdin
spec:
  containers:
  - name: kiada
    image: luksa/kiada:0.2
    stdin: true
    ports:
    - containerPort: 8080

マニフェストが示すように、Podで実行されているアプリケーションが標準入力から読み取るには、コンテナ定義のstdinフィールドをtrueに設定してPodマニフェストにそれを表示する必要があります。これは、Kubernetes に標準入力ストリームのバッファを割り当てるよう指示します。それ以外の場合、アプリケーションはデータを読み取ろうとすると常にEOFを受け取ります。

最後の文章が私を混乱させる。 「標準入力用のバッファ割り当て」とはどういう意味ですか?私はいくつかの手がかりを見つけようとしましたが、Cプログラミングに関連するものだけを見ましたが、それについての知識はあまりなく、概念を理解することは困難です。

誰かが「言語にこだわらない」方法で説明できますか?そのバッファは何ですか? EOFとは何ですか?

私が知っている限り、すべての(?)Linuxプロセスには3つのファイルがあります。

  • 標準入力
  • 標準出力
  • 標準エラー

プロセスは最後の2つを書き、最初のものを読むことができます。

答え1

これは、アプリケーションのstdinに入力されたすべてのエントリを保持するためにkubernetesによって予約されたメモリ量です。 stdinが必要ないと言えば、それほど大きなメモリを保持する必要はありません。ここで重要なのは、特定のサイズのバッファなので、アプリケーションがオーバーフローしないようにすることです。したがって、k8sアプリケーションへの入力がTB / sを生成してもバッファがいっぱいになると、k8sはアプリケーションがそのデータをキャプチャするまでstdinからデータを読み取らなくなります。

EOF(別名)については、End of Fileファイル(またはストリーム)の終わりに到達し、読み取るデータがなくなったときにファイル(またはストリーム)から読み取ろうとすると取得されます。バッファが設定されておらず、アプリケーションが標準入力から読み取ろうとすると、そこにEOFが表示されます。

関連情報