环境: 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终端确保可以毫无问题地完成复制和粘贴。