显示器如何存储显示在其上的数据?它是存储在内存中,如果存储在内存中,我该如何访问它?我问的原因是因为我正在编写一个文本编辑器,我使用一个数组来存储被操作的数据。我想知道我是否可以访问包含屏幕上显示的数据的内存而不是使用我自己的数组。为同一数据保留两次内存似乎是多余的。但我只是不知道显示器如何存储显示在其上的数据,或者它是否甚至存储它。
答案 0 :(得分:3)
你可以对stdout
的去向做出很少的假设。它可能会转到终端,它会在某个地方的缓冲区中结束。或者它可能被传送到另一个进程。或者可能是/dev/null
。或者对于行式打印机等。即使在它最终在某个地方的内存中的情况下,该缓冲区将具有有限的大小,因此不一定保持整个文件。而且你可能无权访问该内存。因此,虽然这在理论上可以在某些情况下起作用,但绝对不是正确的方法。
您可能根本不想将stdout用于文本编辑器,而是使用ncurses
之类的东西,它允许您将文本放在终端所需的位置,并随意更新。文件的实际内容可能最好通过您自己的内部缓冲区进行管理,就像您已经这样做的那样,尽管您也可以考虑mmap
。
答案 1 :(得分:1)
Stdout是程序的输出流。运行程序的环境决定了此流指向的位置。您可能正在从控制台终端或某些IDE运行该程序。
控制台终端默认在内部存储输出,除非指示将输出重定向到文件或其他程序的输入。
您不能依赖第三方存储任何输出信息,以便您以后查询而无需任何协议。您需要在程序中保留足够的数据以生成所需的视图。是的,如上所述,ncurses和这样的库使控制台应用程序构建更容易。