- 主题:linux的管道命令是怎么实现的?
啊,敲错了
【 在 tatamiya 的大作中提到: 】
: 前一个的输出作为后一个的输入
--
FROM 202.109.128.*
DOS是用文件实现的。Linux不是
【 在 RaZRo 的大作中提到: 】
: 文件啊
--
FROM 222.71.112.*
你需要了解
fork
exec
open
dup2
这几个函数
【 在 ludongxing 的大作中提到: 】
: linux的命令行上输入 command1 | command2 |command3;
: linux的|符号表示一个程序执行完,然后继续执行下一个命令,
: 对于上面那行来说就是:先执行command1,然后执行command2,然后执行command3。
: ...................
--
FROM 222.71.112.*
管道是一种ipc的方式,其实是个内存文件
具体细节可以看apue
【 在 ludongxing 的大作中提到: 】
: linux的命令行上输入 command1 | command2 |command3;
: linux的|符号表示一个程序执行完,然后继续执行下一个命令,
: 对于上面那行来说就是:先执行command1,然后执行command2,然后执行command3。
: ...................
--
FROM 103.107.217.225
shell通过pipe实现的
【 在 ludongxing 的大作中提到: 】
: linux的命令行上输入 command1 | command2 |command3;
:
: linux的|符号表示一个程序执行完,然后继续执行下一个命令,
: 对于上面那行来说就是:先执行command1,然后执行command2,然后执行command3。
: 请问是怎么来实现
: ..................
发自「今日水木 on 2106118C」
--
FROM 183.195.13.*
同时创建3个进程作为进程组执行
【 在 ludongxing 的大作中提到: 】
: linux的命令行上输入 command1 | command2 |command3;
:
: linux的|符号表示一个程序执行完,然后继续执行下一个命令,
: 对于上面那行来说就是:先执行command1,然后执行command2,然后执行command3。
: 请问是怎么来实现
: ..................
发自「今日水木 on iPhone XR」
--
FROM 61.158.146.*
找本unix操作系统原理一看就懂,不过估计找不到对的书
【 在 ludongxing 的大作中提到: 】
: linux的命令行上输入 command1 | command2 |command3;
:
: linux的|符号表示一个程序执行完,然后继续执行下一个命令,
: 对于上面那行来说就是:先执行command1,然后执行command2,然后执行command3。
: 请问是怎么来实现
: ..................
发自「今日水木 on iPhone XR」
--
FROM 61.158.146.*
去找一个shell编程看看,
有些命令支持这样用,有些不支持,
不支持的得用其它方法,
【 在 ludongxing 的大作中提到: 】
: linux的命令行上输入 command1 | command2 |command3;
:
: linux的|符号表示一个程序执行完,然后继续执行下一个命令,
: 对于上面那行来说就是:先执行command1,然后执行command2,然后执行command3。
: 请问是怎么来实现
: ..................
发自「今日水木 on V2217A」
--
FROM 39.144.44.*
有本书 linux系统编程有介绍
【 在 ludongxing 的大作中提到: 】
: linux的命令行上输入 command1 | command2 |command3;
:
: linux的|符号表示一个程序执行完,然后继续执行下一个命令,
: 对于上面那行来说就是:先执行command1,然后执行command2,然后执行command3。
: 请问是怎么来实现
: ..................
发自「今日水木 on iPhone 11 Pro」
--
FROM 111.193.130.*
一个典型的linux程序一般为:
1 有标准输入和标准输出设备。
2 程序的通常逻辑是,从标准输入读取内容,处理之后,输出到标准输出。
command1 | command2 的意思是,将 command1 的标准输出设备,重定向到command2的
标准输入。 所以整个处理像一个流水线
1. command1 从标准输入(这里也就是键盘)读取数据
2. command1 处理数据,然后输出到自己的标准输出。
3. command1的标准输出已经重定向到command2的标准输入,所以,command2 从标注输
入读取内容,其实就是从command1的输出内容中读取。
4. command2 处理内容,然后输出到标准输出(这里是屏幕)
这就形成了一个流水线,command1 不停吐出内容,command2 读取这些内容,处理,再
吐出给下一个程序。
这个管道可以一直串联下去,从而可以通过一组程序,完成一个复杂的流水线处理。
基本是这样一个过程。
command1 和 command2 是并行执行的。
【 在 ludongxing 的大作中提到: 】
: linux的命令行上输入 command1 | command2 |command3;
: linux的|符号表示一个程序执行完,然后继续执行下一个命令,
: 对于上面那行来说就是:先执行command1,然后执行command2,然后执行command3。
: ...................
--
FROM 115.171.199.*