Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在Solaris上设置输入队列的动态大小?_C_Unix_Terminal_Solaris - Fatal编程技术网

C 如何在Solaris上设置输入队列的动态大小?

C 如何在Solaris上设置输入队列的动态大小?,c,unix,terminal,solaris,C,Unix,Terminal,Solaris,我通过缓冲区大小为80字节的FGET从终端读取数据。但当我在终端中写很长的一行(超过limits.h中的MAX_输入常数)时,终端就会发出贝尔声音(IMAXBEL是启用的)。我怎么能在终端上输入这么长的行呢?我不能强迫用户输入特殊符号。我只能重写程序 我尝试使用#undef MAX_输入-这不起作用。 若我禁用IMAXBEL,那个么终端只会在输入的MAX_输入字节和队列开头的输入保存的下一个字节之后清除输入队列。。。并一直执行此操作直到用户输入结束。如果您使用文件对长输入进行管道传输,是否有效:

我通过缓冲区大小为80字节的FGET从终端读取数据。但当我在终端中写很长的一行(超过limits.h中的MAX_输入常数)时,终端就会发出贝尔声音(IMAXBEL是启用的)。我怎么能在终端上输入这么长的行呢?我不能强迫用户输入特殊符号。我只能重写程序

我尝试使用#undef MAX_输入-这不起作用。
若我禁用IMAXBEL,那个么终端只会在输入的MAX_输入字节和队列开头的输入保存的下一个字节之后清除输入队列。。。并一直执行此操作直到用户输入结束。

如果您使用文件对长输入进行管道传输,是否有效:

./myprog < input_file
/myprog

它可能与终端实现有关。在这种情况下,使用文件输入是更好的选择(尽管更好的选择可能是重新实现输入逻辑以允许多行输入)

输入逻辑以允许多行输入,但也需要允许非常长的行。我不能限制用户从文件中输入,因为目标要求不允许。那么,最可移植的解决方案就是使用文件来避免任何tty限制