0

环境:Ubuntu 10.04 LTS Gnome Desktop v2.30.2 gcc/g++ 4.4.3 libreadline 6.1

我正在构建一个输入多行输入并为其处理的应用程序,我发现如果输入的大小很大,readline 会跳过几个字节的字符。为了确保,我做了一个这样的简单程序:

#include <stdio.h>
#include <readline/readline.h>
int main() {
    while (1) {
        char *p = readline("> ");
        if (!p) break;
        fprintf(stderr, "%s\n", p);
    }
    return 0;
}

并生成 20000 行输入,其中包含 120000 个字节。

seq -f "%05g" 1 20000 >gen.txt

并在 gnome 终端上运行测试程序并复制和粘贴 gen.txt 的内容:

g++ test.cpp -lreadline
./a.out 2>out.txt
[copy-and-paste the content of gen.txt]

我可以看到 out.txt 比 gen.txt 小,并且省略了很多字节。

wc -c out.txt
119966 out.txt

我想知道哪个组件有缺陷,无论是 gnome 终端还是 readline,并且想知道 readline 和 gnome 终端有多少字节的剪贴板内容可以确保可以毫无问题地完成该数量的复制和粘贴。

4

0 回答 0