コマンドラインでEOF文字を提供する

コマンドラインでEOF文字を提供する

コマンドプロンプトで文字を読み取り、EOFを確認してプログラムを終了しています。ただし、+
コマンドを実行するとEOFとは見なされません。どうするか具体的に説明してください。CtrlD

Ctrl+ がC動作している場合、プロセス全体が終了します。

ベストアンサー1

tty "cooked"モードを想定すると - ライン入力処理を終了し、入力されたデータをアプリケーションに送信するようにctrl機能します。Dしたがって、「abc」の後に-を入力すると、ctrlこのD3バイトがアプリケーションに送信されます。

さて、アプリケーションは通常ファイルの終わりをどのように決定しますか?読み取りがゼロバイトを返す場合は、EOFと見なされます。したがって、読み取りがゼロバイトを返すようにする必要があります。最初にクリックしenterてからctrl- を押すと、D入力したすべての内容が改行でアプリケーションに送信されます。その後、ctrl入力したDすべてのデータ(つまり、データなし!)がアプリケーションに送信され、ゼロバイトが読み取られ、EOFと見なされます。

クリックするenter前に何も入力すると、アプリはそのキーストロークを受け取り、さらに待ちます。したがって、最初にクリックせずにEOFを生成するには、連続してダブルクリックします。ctrlDenterctrlD

したがって、あなたの質問に答えるには、[次へ]をクリックしてください。ctrl- をクリックする前に(新しい行に加えて)最初に文字を入力しましたかD?それでは、連続して2回試してみてください。

たとえば、次を使用してこれを実行できます。

$ wc -l
test123     0     1     7

(次をクリックctrl- ダブルクリック)Dtest123

このwcユーティリティは、読み取った行、単語、および文字数を表示します。改行文字を入力しなかったため、行数は0で、行数test123は1単語、7文字の長さです。

おすすめ記事