C 如何在Solaris上设置输入队列的动态大小?
我通过缓冲区大小为80字节的FGET从终端读取数据。但当我在终端中写很长的一行(超过limits.h中的MAX_输入常数)时,终端就会发出贝尔声音(IMAXBEL是启用的)。我怎么能在终端上输入这么长的行呢?我不能强迫用户输入特殊符号。我只能重写程序 我尝试使用#undef MAX_输入-这不起作用。C 如何在Solaris上设置输入队列的动态大小?,c,unix,terminal,solaris,C,Unix,Terminal,Solaris,我通过缓冲区大小为80字节的FGET从终端读取数据。但当我在终端中写很长的一行(超过limits.h中的MAX_输入常数)时,终端就会发出贝尔声音(IMAXBEL是启用的)。我怎么能在终端上输入这么长的行呢?我不能强迫用户输入特殊符号。我只能重写程序 我尝试使用#undef MAX_输入-这不起作用。 若我禁用IMAXBEL,那个么终端只会在输入的MAX_输入字节和队列开头的输入保存的下一个字节之后清除输入队列。。。并一直执行此操作直到用户输入结束。如果您使用文件对长输入进行管道传输,是否有效:
若我禁用IMAXBEL,那个么终端只会在输入的MAX_输入字节和队列开头的输入保存的下一个字节之后清除输入队列。。。并一直执行此操作直到用户输入结束。如果您使用文件对长输入进行管道传输,是否有效:
./myprog < input_file
/myprog
它可能与终端实现有关。在这种情况下,使用文件输入是更好的选择(尽管更好的选择可能是重新实现输入逻辑以允许多行输入)输入逻辑以允许多行输入,但也需要允许非常长的行。我不能限制用户从文件中输入,因为目标要求不允许。那么,最可移植的解决方案就是使用文件来避免任何tty限制