首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当跟踪xclip时,它不会终止。

当跟踪xclip时,它不会终止。
EN

Stack Overflow用户
提问于 2013-10-08 17:13:19
回答 1查看 1.4K关注 0票数 8

我提出以下意见:

代码语言:javascript
复制
$ xclip text.txt

执行立即停止,它将text.txt的内容复制到默认的选择XA_PRIMARY,这意味着您可以通过鼠标中间按钮或xclip -o粘贴它。

当我想看xclip在做什么时,它不再终止了:

代码语言:javascript
复制
$ xclip -verbose text.txt
Connected to X server.
Using UTF8_STRING.
Reading text.txt...
Waiting for selection requests, Control-C to quit
  Waiting for selection request number 1

在我选择X11系统中的某些内容之前,它不会终止,例如,我在这里粘贴的这个输出。如果行为仅限于verbose,我将理解这一点。毕竟你想坐着看看会发生什么。

我可以在strace中复制相同的行为,但前提是提供了叉选项。

代码语言:javascript
复制
$ strace -f xclip text.txt

或者当使用系统执行命令从Ruby中取出时,系统执行命令应该返回输出,这实际上是没有的。

代码语言:javascript
复制
$ ruby -e "`xclip text.txt`"

strace给出的提示是,它正在对文件描述符进行轮询以等待事件。如果我选择某件事,这个事件是满意的。这种行为可以解释吗?我得到了证据,这是不能在任何系统上复制的。这与票证#9在从stdin设置剪贴板时不关闭stdout有关吗?

我正在Ubuntu13.04上运行xclip版本0.12。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-08 23:27:05

XClip在没有-verbose的情况下启动时会叉到一个孩子。与-verbose的唯一区别是,没有子分叉,相同的原始进程处理ConvertSelection事件。

通常在X窗口工具箱中,复制/粘贴是通过X选择实现的

选择是由atom命名并由特定客户端拥有的全局服务器资源。选择的次数不受协议的限制,原子可能存在的选择数量一样多。选择的目的是为建立客户之间的通信机制提供基础。在“X协议”的词汇中发现了“fifinition”: “具有动态类型的...an间接属性;也就是说,该属性不是存储在服务器中,而是由某些客户端(‘所有者’)维护。所选内容本质上是全局的,被认为是属于用户的(虽然由客户端维护),而不是私有于特定的窗口子层次结构或特定的一组客户端。” 从应用程序的角度来看,选择提供了在X客户机之间传输信息的机制。由于X是一种网络协议,因此不能假定存在不同客户端之间的单独数据传输通道。选择仅用于数据传输,而数据传输直接关系到应用程序的用户界面方面,尽管该策略没有任何强制执行。

选择的内容存储在应用程序本身中,并使用ConvertSelection事件进行请求(此处为“转换”,因为客户端有一种方法可以请求所选数据的特定mimetype (或“视图”或格式)。转换同样发生在拥有所选缓冲区的应用程序中。

由于这种架构,没有办法“将文本复制到系统缓冲区并退出”--因为您是一个系统缓冲区。XClip通过分叉和去功能化来模拟“复制和退出”。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19254114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档