コマンドプロンプトで文字を読み取り、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文字の長さです。