GNU/Linux >> Linux の 問題 >  >> Linux

EotとEofの違いは?

EOTはASCIIコード4であるのに対し、EOFは-1としてエンコードされていることを理解しています(少なくともCでは)。 EOFが-1にマップされていることを知る前は、これはEOTの同義語にすぎないと思いました。 EOFがEOTではなく-1にマップされるのはなぜですか?私の知る限り、どちらも同じことをします。つまり、ファイルストリームを終了します。私が認識できる唯一の違いは、EOTがbashシェルのコマンドも終了することです。これら2つのコードの正確な技術的な違いについて説明してください。

承認された回答:

通常、EOFはキャラクターではありません。キャラクターがいないことです。

プログラムがデフォルト設定の正規モードで端末上で実行されている場合(つまり、stdioのみを使用するプレーンCプログラム)、ASCII文字のEOTは表示されません。ターミナルドライバはその文字を認識し、EOF条件を作成します(低レベルでは、read()からの戻り値は0です。 )。 stdioライブラリは、そのEOF条件を、問題の関数(EOF)に適切な戻り値に変換します。 getchar()のマクロ 、fgets()のnullポインタ 、など)

EOFの数値 マクロはCライブラリ以外では関係がなく、EOF条件の意味の理解に影響を与えることはありません。


Linux
  1. ログインシェルと非ログインシェルの違いは?

  2. 2>&-、2> / dev / null、|&、&> / dev/nullと>/dev / null 2>&1の違いは?

  3. Sudo Su –とSudo Su —の違いは何ですか?

  1. Sudoユーザーとrootユーザーの違いは?

  2. SnatとMasqueradeの違いは?

  3. Qemu と KVM の違い

  1. CLOCK_REALTIME と CLOCK_MONOTONIC の違いは?

  2. GNUWin32 と cygwin の違い

  3. Bash の ${} と $() の違い