0

显示器如何存储其上显示的数据?它是否存储在内存中,如果是,我该如何访问它?我问的原因是因为我正在编写一个文本编辑器,我在其中使用一个数组来存储正在操作的数据。我想知道是否可以访问包含屏幕上显示的数据的内存,而不是使用我自己的数组。为相同的数据保留两次内存似乎是多余的。但我只是不知道监视器如何存储显示在其上的数据,或者它是否甚至存储它。

4

2 回答 2

3

你可以对去向做出很少的假设stdout。它可能会到达一个终端,最终会在某处的缓冲区中结束。或者它可能会被传送到另一个进程。或者它可能会/dev/null。或者到行式打印机等。即使在它最终在内存中某处的情况下,该缓冲区也将具有有限的大小,因此不一定保存整个文件。而且您可能无论如何都无权访问该内存。因此,虽然这在理论上可以在某些情况下工作,但这绝对不是正确的方法。

您可能根本不想将 stdout 用于您的文本编辑器,而是使用类似的东西ncurses,它可以让您将文本放置在终端中您想要的位置,并随意更新它。文件的实际内容可能最好通过您自己的内部缓冲区进行管理,您已经这样做了,尽管您也可以考虑mmap

于 2012-11-18T21:47:06.407 回答
1

stdout 是程序的输出流。您运行程序的环境决定了该流指向的位置。您可能正在从控制台终端或某些 IDE 运行程序。

默认情况下,控制台终端将输出存储在内部,除非被指示将输出重定向到文件或其他程序的输入。

您不能在没有任何协议的情况下依赖第三方存储任何输出信息供您以后查询。您需要在程序中保存足够的数据来生成所需的视图。是的,如上所述,ncurses 和此类库使控制台应用程序的构建更加容易。

于 2012-11-18T21:50:53.373 回答