|
发表于 2007-8-15 14:55:54
|
显示全部楼层
如果管道把前一个命令的标准输出(1,2),是先执行命令1,执行完毕了把结果方在一个文件里,然后由命令2处理吗?
不是,不存在临时文件,你可以想象为水流,自来水龙头出来的水通过管道输入到过滤器,再由过滤器出来过滤后的水。
自来水龙头就是ls,水管就是|,过滤器就是grep,龙头出来的水是标准输出,过滤器通过水管接收自来水相当于grep通过将ls的标准输出作为自己的标准输入。过滤器出来过滤后的水就是grep处理后的标准输出。
这只是大致的比喻,两个进程是同时开始的,如果前一个进程的输出能力超过了后一个进程的输入能力,那就要牵涉到缓冲,排队的概念了,这个shell帮你安排了,你自己感觉不到。
用临时文件(无论是实在的,还是内存中虚拟的)那是单任务系统的做法。 |
|