Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.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++ GNU Readline可以处理多个流吗?_C++_C_Linux_Telnet_Readline - Fatal编程技术网

C++ GNU Readline可以处理多个流吗?

C++ GNU Readline可以处理多个流吗?,c++,c,linux,telnet,readline,C++,C,Linux,Telnet,Readline,我正在构建一个telnet应用程序,它使用GNU Readline来处理控制台输入。当前的实现为每个新的客户端连接派生一个新的子进程-这将为每个子进程分配一个readline实例 Fork类型的网络服务器不是最高效的,因此我想改用poll/epoll,但为此,readline必须配置为使用多个流缓冲区和历史记录,每个客户端连接一个 我阅读了GNU readline文档来搜索这种配置,但没有找到它。这是可能的,还是有某种readline替代方案可以使用此功能?我应该放弃这个想法吗?Readline

我正在构建一个telnet应用程序,它使用
GNU Readline
来处理控制台输入。当前的实现为每个新的客户端连接派生一个新的子进程-这将为每个子进程分配一个
readline
实例

Fork类型的网络服务器不是最高效的,因此我想改用poll/epoll,但为此,
readline
必须配置为使用多个流缓冲区和历史记录,每个客户端连接一个


我阅读了
GNU readline
文档来搜索这种配置,但没有找到它。这是可能的,还是有某种
readline
替代方案可以使用此功能?我应该放弃这个想法吗?

Readline被记录为专门从终端读取。它没有记录在案的机制来同时维护多个输入的状态,并且您已经在使用它从实际上不是终端的流中读取数据了


此外,
readline
的语义与多路复用样式的服务不匹配,因为每次调用它都会阻塞,直到它可以读取完整的行。这根本不是一个可行的替代方案,也不是任何具有类似一次一行阻塞行为的工作。

担心交互应用程序中的fork效率?你想用它做什么,每秒按十亿个键?话虽如此,看,也许你是对的。我认为分叉是足够有效的,我对这种方法的关注来自于构建网络服务器的最佳实践,我读了很多关于poll/epoll是最佳选择的方法。感谢您的回答,我认为这解决了我的疑问。我将继续使用我已经实现的内容。顺便说一下,
GNU readline
提供了一种以非阻塞方式调用它的方法,它是
rl\u callback\u read\u char