从 C 中用 less(1) 打印

Print with less(1) from C

我想打印一个链表中的大数据矩阵。不适合终端(80行),用标准打印功能打印不方便; less 已经发明了,所以我不想使用 ncurses 重新发明它;所以我想将一些 printfd 行传递给 less.

我的第一个猜测是写入文件,然后system("less -S file");,然后删除文件。

一个更复杂的解决方案是重写 less 以便它的 main() 转换为我可以从 C 调用的 less() 函数,而不是我可以提供的文件名字符串文件描述符或流。

有什么方法既不需要创建文件又不需要重写(部分)less?

您可以考虑使用 POSIX 函数 popen() and pclose()

你会使用:

FILE *fp = popen("less", "w");

if (fp != NULL)
{
    …write output to fp…
    pclose(fp);
}
else
    …report error…

请注意 pclose() 将等待 less 退出。如果需要,您可以从 pclose() 中捕获 return 值并进行分析。有关此内容的讨论,请参阅