在本书的“Lisp的小件”的开幕页,有一段是这样的:“UNIX字节流的组成”是什么意思?
基于“功能”的理念,已经成熟了 几个世纪以来的想法数学研究,应用语言在计算中无所不在;它们以各种形式出现,例如Un * x字节流的 组成,Emacs 编辑器的扩展语言以及其他脚本语言。
任何人都可以详细介绍一下“unix字节流的组成”?这是什么意思?以及它如何与应用/功能编程相关?
感谢,
/熊先生
在本书的“Lisp的小件”的开幕页,有一段是这样的:“UNIX字节流的组成”是什么意思?
基于“功能”的理念,已经成熟了 几个世纪以来的想法数学研究,应用语言在计算中无所不在;它们以各种形式出现,例如Un * x字节流的 组成,Emacs 编辑器的扩展语言以及其他脚本语言。
任何人都可以详细介绍一下“unix字节流的组成”?这是什么意思?以及它如何与应用/功能编程相关?
感谢,
/熊先生
我的猜测是,这是对像linux下pipe
的参考。
cal | wc
符号|
它就是调用2个应用程序之间的管道,pipe
是由内核提供的,所以你可以使用其中的应用程序都在使用这种内核API的书面管道的特征。
在这个例子中cal
仅仅是打印日历工具,wc
是计算在你传递给它的输入字,行和列,在这种情况下,实用的输入管道cal
到wc
结果这使得事情变得更加简单,因为它更实用,您只关心每个应用程序的功能,而不关心例如参数的名称或分配临时文件以存储输入/输出的位置在之间。
没有管,你应该这样做
cal > temp.txt
wc temp.txt
rm temp.xt
获得几乎相同的信息。此外,这第二个解决方案可能会产生问题,例如如果temp.txt
已经存在?遵循什么样的原则,你会告诉脚本为你的临时文件选择一个名字?如果另一个进程在两个调用cal
和wc
之间修改了您的文件,该怎么办?
谢谢。现在对我来说有点清楚了......单个Unix实用程序被认为是独立/正交的主要功能,而pipe是将它们“粘合”(合成)在一起以在基元之上构建图层的方式......“cal | wc “可以在功能上被视为”wc(cal())“... – bruin