我想知道为什么在Linux API和Bash中pipe道可以使用的进程之间的关系是不同的。
在Linux API中,无名pipe道( pipe() )只能在父subprocess之间使用。
在Bash中,可以在具有shell进程的两个进程之间使用pipe道作为其共同的父进程。
Bash中的pipe道是用Linux API中的未命名pipe道实现的吗? 谢谢。
命令在shell脚本中找不到
在Linux中使用笔记本电脑的光线传感器
在Windows 7中启动Git Bash时出错
Bash:将variables赋值的代码退出到命令replace
来自APUE 3ed:
15.2pipe道
pipe道是UNIX系统IPC的最早forms,由所有UNIX系统提供。 pipe道有两个限制。
从历史上看,它们是半双工的(即数据只在一个方向stream动)。 有些系统现在提供全双工pipe道,但为了最大限度的便携性,我们绝不应该假定情况是这样的。
pipe道只能用于具有共同祖先的进程之间。 通常情况下,一个pipe道是由一个进程创build的,该进程调用fork, pipe道在父进程和subprocess之间使用。
我们将看到FIFO(第15.5节)解决了第二个限制,而UNIX域套接字(第17.2节)解决了这两个限制。
…
15.5个FIFO
FIFO有时被称为命名pipe道。 当共同的祖先创build了pipe道时,未命名的pipe道只能在相关的进程之间使用。 但是,使用FIFO,不相关的进程可以交换数据。
如何从variables运行脚本命令?
用户指定replacestring的sedreplace
在文件中的grep和replacestring
在Linux API中,无名管道( pipe() )只能在父子进程之间使用。
不对。 它们可以被具有文件描述符的任何进程使用:父进程, 任何子进程, 通过域套接字接收到的进程等。
bash中的管道只是儿童与儿童沟通的一个具体情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。