什么是“管子”,如何“断”?

Mos*_*she 12 unix xcode pipe ios

在此处输入图片说明

我曾多次从 Xcode 收到“管道破裂”错误。我现在很好奇到底什么是管道。

“管子”是什么概念,怎么“断”?

小智 7

管道只是一种进程间通信 (IPC) 机制,用于将一个进程的标准输出连接到另一个进程的标准输入。

例如,当您想在文件中搜索“pax”一词时:

cat filename | grep pax
Run Code Online (Sandbox Code Playgroud)

是的,我知道您可以grep直接使用该文件,但这并不能解释它是如何工作的,是吗?

这将cat命令的标准输出连接到命令的标准输入grepcat将文件的内容发送到其标准输出,并grep从其标准输入读取其文件(在本例中)。通过像这样将流程连接在一起,您可以创建自己的工具,由任意数量的管段组成。像:

show_users | grep pax | awk -F: '{print $4}' | tr '[a-z]' '[A-Z]' | cut -c1-20
Run Code Online (Sandbox Code Playgroud)

管是其中(通常)的数据的接收器已经关闭了连接,而发送者仍试图通过发送东西。

例如,如果您通过寻呼程序发送一个大文件(一次查看一页):

cat myfile | pager
Run Code Online (Sandbox Code Playgroud)

然后执行 a CTRL-BREAK,这可能会导致pager进程在cat完成使用之前关闭其输入管道。这是获得这条破损管道的一种可能性。


从粗略的谷歌搜索来看,这个特殊问题似乎与临时部署有关,给出的解决方案通常包括退出大部分软件并重新启动大部分设备。

这可能严重到足以向 Apple 报告该问题。抱怨它的开发人员越多,就越有可能采取措施来修复它。