复制粘贴怎么可能?

时间:2018-10-19 07:19:36

标签: operating-system system copy-paste file-copying copying

长时间使用计算机后,我想知道复制粘贴是基本功能,但我知道不是。那么问题是,这如何真正起作用?

我想到了所有可能如何实现的想法,但是每次我提出不同的文件格式(例如gif,jpg,txt,png,png,mp3,mp4,JSON,YML等)时,我都会陷入困境。去复杂它就像快捷方式,链接,然后有目录。就像它以chrome方式复制搜索结果中的图像一样,有时由于限制而无法复制某些内容,也无法选择某些内容,然后就无法复制,而有时即使无法按层次结构选择子项被复制,因此它是如何实现的。

但是,当有人问我复制粘贴的工作原理时,我会回答:复制某些内容时,它将复制的项目放入内存中,然后将其粘贴到操作系统找到的位置复制并将所有文件复制为二进制文件并将其复制。

可能不正确,所以您可以解释一下它是如何工作的。知道复制粘贴代码的方式也是很有帮助的。

1 个答案:

答案 0 :(得分:1)

您需要意识到的第一件事是,“复制和粘贴”以及“拖放”是IPC(进程间通信)的一种形式,因为数据是从一个应用程序传输到另一个应用程序的。这种机制通常由负责管理图形用户界面的相同子系统或服务提供。

此子系统为“源”和“目标”应用程序提供了一种机制,以协商应传输的数据格式,如果它们“同意”某种通用格式,则可以传输数据。

一个例子来说明这个概念:

  1. 用户在网络浏览器中选择文本,然后按Ctrl + C。
  2. 浏览器告诉窗口系统它有一些数据可用于复制。 请注意,此步骤未复制任何数据。
  3. 用户打开文本编辑器,然后按Ctrl + V。
  4. 文本编辑器告诉窗口系统以纯文本格式在剪贴板上提供其内容
  5. 窗口系统告诉浏览器以纯文本格式提供其共享数据
  6. 浏览器将其数据从 HTML(或其他)转换为纯文本,然后通过窗口系统将其传输到文本编辑器。 请注意,这种转换并非总是可能的(取决于格式和应用程序),因此有时您无法粘贴复制的数据。

技术细节

  • 在Windows上,如Ken White所述,此功能是通过Clipboard API提供的。
  • 在Linux(可能还有其他地方)上,剪贴板功能并不是严格意义上的操作系统的一部分,而是由Window Server / Manager(实际上只是一个服务进程)通过诸如{{ 3}}或X protocol