linux剪贴板复制文件原理,linux剪贴板原理
在 X window system中,窗体之间传输数据,使用的是“selection”,也就是常说的“剪贴板”
X window system中支持任意的selection.
其中,最重要的是PRIMARY selection,然后是CLIPBOARD selection,还有已经废弃的CUT_BUFFER(0~7)。
而 X Window 把这种叫做“选择”(selection),有支持两种方式:一种是主(Primary)选择,一种是剪贴板(Clipboard)选择。其实还有一个副(Secondary)选择,但已经过时不用。和 Windows 不同的是,没有一个全局的缓冲区来保存拷贝的信息。其工作方式是这样的:当一个程序中选择了一些东西,它就说“我现在是当前选择的所有者”,这时在另外一个程序中要进行粘贴的话,就向当前选择的所有者发请求,请求获取数据。然后所有者就给请求者发送数据。其中的过程可以认为是进程间通讯。
先说剪贴板选择,其用于菜单的拷贝、粘贴、剪切选项,看上去跟 Windows 的拷贝粘贴方式是一模一样的,只是选择了以后,点击了拷贝(或者快捷键也可以),这时候要声明所有权,然后在内部保存一份需要拷贝的东西。当别的程序粘贴的时候,把保存的东西发送过去。
主选择略微有点不同,当你选择任何东西的时候(鼠标或者键盘),当前程序就声明所有权(不需要明确进行拷贝),并保存一份。当别的程序用鼠标中键(或者左右同时双击来模拟)进行粘贴的时候,把数据发送过去。
所以总结一下,X 内部的实现方式,对于一个程序:
使用鼠标或者键盘选择一段文本:声明主选择(Primary)所有权(可能内部也要保存一份)
拷贝(菜单或者快捷键):内部保存一份,声明剪贴板(Clipboard)所有权
粘贴(菜单或者快捷键):获取剪贴板中的数据,并插入到适当的位置
鼠标中键(或者双键模拟):获取主选择的数据,并插入到适当的位置
另一个程序请求主选择数据:把内部保存的主选择发送出去
另一个程序请求剪贴板数据:把保存的剪贴板数据发送出去
另一个程序声明主选择所有权:丢弃保存的主选择数据
另一个程序声明剪贴板所有权:丢弃保存的剪贴板数据
这只是一个比较简单的描述,实际上的实现要更复杂一些,具体请参考 [ICCCM] 的文档。
X 上绝大部分程序都是支持主选择的,也可以认为缺省就是支持的。有一些对剪贴板的支持不够明显,没有菜单或者快捷键之类的,只能用鼠标进行选择,比如多数的 Terminal Emulator,但提供了快捷键。xterm/rxvt/urxvt/mrxvt 等可以使用“Shift + 鼠标中键”从剪贴板拷贝。Emacs 使用主选择。更多的程序用的是剪贴板。
linux剪贴板复制文件原理,linux剪贴板原理相关推荐
- linux怎么复制文件夹全部内容,linux局域网怎么复制文件夹下的全部文件到另外文件夹...
在Linux系统局域网中复制或拷贝文件我们可以用cp或者copy命令,但要对一个文件夹中的全部文件复制到另外一个文件夹中去,如何进行操作呢?linux局域网复制文件夹下的全部文件到另外文件夹的方法其实 ...
- 如何在 Linux 中复制文件到多个目录中
在 Linux 中,cp 命令常被用于从一个文件夹中复制文件到另一个文件夹中,最简单的语法如下: # cp [options-.] source(s) destination 另外,你也可以使用高级复 ...
- 【Linux】复制文件到当前目录 / 复制文件并重命名到当前目录
Linux系统 复制文件到当前目录 如何在 Linux 系统下复制当前目录的文件到当前目录: 使用 cp 命令对文件进行拷贝粘贴: 1 复制文件到当前目录并重命名 比如: 我们想把 my_file 这 ...
- linux Qt 复制文件至剪切板
转载:linux Qt 复制文件至剪切板 文中提到的 两种mime type 同时设定那块, 当拷贝文本的时候能看到data->formats 里面没有 text/uri-list 和 x- ...
- 【Linux】复制文件到当前目录 复制文件并重命名到当前目录
Linux系统 复制文件到当前目录 如何在 Linux 系统下复制当前目录的文件到当前目录: 使用 cp 命令对文件进行拷贝粘贴: 1 复制文件到当前目录并重命名 比如: 我们想把 my_file 这 ...
- Linux CentOS 复制文件、替换文件 cp 复制文件、cp 覆盖文件 cp替换文件
Linux CentOS 复制文件.替换文件 cp 复制文件.cp 覆盖文件 cp替换文件 一.Linux 复制文件语法 1. cp [option] src dest 2. option 可选参数 ...
- linux如何复制文件夹和移动文件夹
我想把我的某个目录下的某个文件夹复制(如:/tmp/a,啊是文件夹名称)到某个目录下(如:/root/a,文件夹还是叫a),请问应该怎么在命令行下操作?谢谢 CP命令 格式: CP [选项] 源文件或 ...
- linux命令 复制文件夹命令行,(转)每天一个linux命令(8):cp 命令,复制文件和文件夹...
场景:自动部署脚本中为了部署方便,将配置文件放在服务器端,每次部署都使用服务端的配置文件覆盖上传上去的配置文件. cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一. 一般情况下,she ...
- linux下复制文件
linux下复制文件 linux 复制文件命令是cp. 常见用法: 1.复制当前目录下的文件fileA到目录directory里面. cp fileA /directory/ 2.复制当前目录下的文件 ...
- 在linux里复制文件命令_如何在Linux上使用“安装”命令复制文件
在linux里复制文件命令 Fatmawati Achmad Zaenuri/Shutterstock.com Fatmawati Achmad Zaenuri / Shutterstock.com ...
最新文章
- linux sed 批量替换多个文件中的字符串
- 三种流行的数据库查询表记录数【转】
- Quality Center Issue with CAPICOM.DLL not prop...
- eclipse环境配置、快捷键及基本操作
- jhipster_jHipster入门,第1部分
- hightmaps 按地图上显示的统计数据
- 宛如造句,小学生怎么用宛如造句?
- 本示例主要展示如何在XtraGrid网格控件(包含在DevExpress WinForms套包中)的主视图中指定HyperLinkEdit控件作为列编辑器...
- 小项目,吃货联盟,java初级小项目,源代码
- 快速开发:普元EOS平台简介
- 国外素材网站打不开?还想要同品质图片?
- 程序中美元符号$是什么
- 视频会议设备大比拼,创新让科技更好的服务社会!
- 年轻人,你的目标不该是成为斜杠青年
- AcWing 739. 数组选择
- 浅谈linux - 内核时间的处理
- 一维信号小波阈值去噪
- 链接器lds文件简介
- 对AVL树和红黑树的个人理解
- deepin更新失败_深度操作系统deepin 20更新:深度下载器和浏览器
热门文章
- iOS之深入解析如何检测“循环引用”
- RxSwift之深入解析Subject的使用和实现原理
- Swift之数组去重(去除重复元素)
- Ubuntu12.04 LTS 忘记登录密码的解决方法
- 【机器视觉】 comment算子
- 【Linux系统编程】进程和线程的区别
- 大脑构造图与功能解析_解析地轨、隐藏轨推拉门及折叠门的构造做法,收藏学习...
- 宏观 量子计算一句话
- 字符串常量前面的L的作用
- 解决 LLVM 错误 fatal error: ‘csignal’ file not found