12

コマンドラインツールを書いています。このツールができることの 1 つ (確かに一意ではありません) は、stdin からの入力を読み取ることです。私はこれをインタラクティブにテストしていました (ファイルを cat するのではなく、input を入力することによって)、EOF を通知する方法がわからないことに気付きました。

今夜、これをグーグルで検索するのに途方もない時間を費やしましたが、何も役に立ちませんでした。SOも検索しました。お気軽に重複した質問を指摘してください。ただし、十分な注意を払いました。約束します。

編集: Windows でこれを行っていることに言及することは役立つかもしれません (?)。それで、端末は多かれ少なかれブランドのMinGWだと思いますか?

4

4 に答える 4

7

Windows で EOF をプログラムの入力に送信しようとしている場合は、Ctrl-Z探しているものです。

于 2013-03-28T02:23:47.270 に答える
3

それは ^D、ASCII End of Transmission 文字です。すべての GNU ユーザーランド ツールは POSIX 標準を使用します。

于 2013-03-28T02:45:47.363 に答える
3

私が Windows 上の Git Bash で使用している簡単な回避策は、プログラムへの入力を cat することです。

たとえば、実行する代わりに

java my_package.Main

実行できます

cat | java my_package.Main

これが機能するのは、cat プログラムが端末からのメッセージの終了を受け入れることができる linuxy-program であり、java がパイプを介してメッセージの終了コマンドを適切に受信できるためです。

したがって、このコマンドを使用する場合、メッセージを入力した後に Ctl-D を入力すると、Java プログラムはメッセージの終わりを正しく認識します。

于 2021-12-09T16:17:51.240 に答える