0

クエリ

ユーザー入力 (文字列) を受け入れる Java プログラムを作成しました。問題は、端末が 4096 文字を超えるサイズの入力を許可していないことです。これを引き起こす問題は次のとおりです。

  1. 引数の長さの POSIX 最小許容上限 (すべてのシステム): 4096 次のコマンドを使用して確認します。xargs --show-limits
  2. パイプ バッファ サイズ: 4096 次のコマンドを使用して確認します:ulimit -aまたはulimit -p

これらの値を増やす方法を誰かが提案できますか? または、ユーザー入力として許可される文字数を増やすにはどうすればよいですか。

引数として約 1 MB のデータを受け入れたいと考えています。

4

1 に答える 1

2

マリが言ったように:stty -icanonプログラムを起動する前に端末で...問題を解決します..

POSIX systems support two basic modes of input: canonical and noncanonical (or raw mode).

In canonical input processing mode, terminal input is processed in lines terminated by newline ('\n'), EOF, or EOL characters. The operating system provides input editing facilities: the ERASE and KILL characters are interpreted specially to perform editing operations within the current line of text.

In noncanonical input processing mode (raw mode), characters are not grouped into lines, and ERASE and KILL processing is not performed. The granularity with which bytes are read in raw mode is controlled by the MIN and TIME settings (see man termios the VMIN and VTIME value. VMIN specifies the minimum number of bytes before a read returns. VTIME specifies the number of tenths of a second to wait for data to arrive.

More bascally, in canonical mode, input are accumulated in a buffer (4096) until a \n occured. In raw mode, input is flushed when VMIN or VTIME occured

ありがとうマリ..

于 2013-08-14T08:31:08.260 に答える