如何使用 popen、less 和 fprintf(或类似的)在 c 中进行分页

How to do pagination in c with popen, less and fprintf (or similar)

我正在从文件中读取行,我想在显示时对它们进行分页,使用 popen()less。我无法让它发挥作用,也找不到任何特定于该主题的示例。所以我在这里。最小的可编译代码示例如下所示:

#include <stdlib.h>
#include <stdio.h>

int main()
{
    FILE* stream;
    
    stream = popen("less", "w");

    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    fprintf(stream, "Line\n");
    
    return 0;
}

如何对多个 fprintf() 语句进行分页?甚至可能是我正在尝试的方式还是我应该采取另一种方法?

非常感谢。

好的,我明白了。我忘记使用 pclose() 关闭创建到 less 的管道流。在最后添加 pclose(stream) 解决了问题。