使用C中的less(1)打印

问题描述 投票:3回答:1

我想打印链接列表中的大数据矩阵。它不适合终端(80行),因此使用标准打印功能进行打印很不方便; less已经被发明,所以我不想使用ncurses来重新发明它;因此我想向printf传递一些less d行。

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

[更复杂的解决方案是减少重写,以便将其main()转换为我可以从C调用的less()函数,并且可以为文件名字符串或流提供文件名字符串,而不是文件名字符串。

有没有一种方法不需要创建文件,也不需要重写(少部分)?

c pipe posix less-unix
1个回答
3
投票

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

您将使用:

pclose()

请注意,pclose()将等待FILE *fp = popen("less", "w"); if (fp != NULL) { …write output to fp… pclose(fp); } else …report error… 退出。如果需要,可以从pclose()捕获返回值并进行分析。有关此问题的讨论,请参见less

© www.soinside.com 2019 - 2024. All rights reserved.