bermuda 工具
bermuda 和 geo2json 的工作方式极其相似,它们都逐行读取 GPS 数据,然后向标准输出发送数据。
但有两点不同:首先,bermuda 工具不会把所有数据都发送到标准输出中,而只发送那些落在百慕大三角内的数据;其次,bermuda 工具输出、输入数据的格式相同,都是用来保存 GPS 数据的 CSV 格式。
下面就是 bermuda 工具的伪代码:
我们来把伪代码变成 C 语言。
游泳池拼图
你需要补全 bermuda 程序的代码,取出游泳池中的碎片,把它们填到空白的横线处,有的碎片可能一次都用不到。
游泳池拼图解答
你取出游泳池中的碎片,补全了 bermuda 程序的代码,把它们填到了空白的横线处。
试驾
完成了 bermuda 工具,下面就和 geo2json 工具一起使用,看看能不能把百慕大三角以外的数据都过滤掉。
编译这两个工具,打开控制台,输入以下命令同时运行两个程序:
两个独立的程序用管道连接以后就可以看成一个程序,可以重定向它的标准输入和标准输出。
这里没有蠢问题问:为什么小工具要使用标准输入和标准输出?答:有了它们,就可以轻易用管道将小工具们串连起来。问:为什么要把它们串连在一起?答:小工具只能解决一个小技术问题,例如转换数据的格式,而无法解决整个问题。只有把它们组合在一起,才能解决大问题。问:到底什么是管道?答:不同操作系统实现管道的方法不同,可能用存储器,也可能用临时文件。我们只要知道它从一端接收数据,在另一端发送数据就行了。问:如果两个程序用管道相连,第二个程序要不要等第一个程序执行完后才能开始运行?答:不需要,两个程序可以同时运行,第一个程序一发出数据,第二个程序马上就可以处理。问:为什么小工具要使用文本?答:文本是一种开放格式,程序员可以用文本编辑器来查看小工具的输出,并理解里面的内容,相比之下,二进制格式就难懂多了。问:我能用管道连接多个程序吗?答:能啊,只要在每个程序前加上一个|就行了,一连串相连的进程就叫流水线(pipeline)。问:当我用管道连接多个进程时,< 与 > 分别重定向哪个进程的标准输入、哪个进程的标准输出?答: < 会把文件内容发送到流水线中第一个进程的标准输入, > 会捕获流水线中最后一个进程的标准输出。问:当我在命令行中运行 bermuda 和 geo2json 程序时,它们外面的括号是必需的吗?答:是的,这对括号保证了数据文件由 bermuda 程序的标准输入来读取。
要点
如果想完成一个不同的任务,应该另外写一个小工具。
小工具应该使用标准输入和标准输出。
小工具通常读写文本数据。
可以用管道连接一个进程的标准输出和另一个进程的标准输入。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论