LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1118|回复: 7

more命令是怎样实现的[基本解决]

[复制链接]
发表于 2004-2-2 17:20:13 | 显示全部楼层 |阅读模式
本人是大菜鸟,学过一点c和c++,很想知道more命令是怎样实现的。
会不会是计算输出到了什么位置,快一屏就来一个"-more-",再判断键盘输入然后继续输出或退出。
请指教
发表于 2004-2-2 17:38:14 | 显示全部楼层
寻找more的源代码,但不知道在哪个软件包?
 楼主| 发表于 2004-2-2 21:24:40 | 显示全部楼层
其实我只是想知道大概的思想
发表于 2004-2-2 21:31:34 | 显示全部楼层
man more

OR算法?那要看 源码。
发表于 2004-2-3 13:42:14 | 显示全部楼层

回复: more命令是怎样实现的

最初由 syping2001 发表
本人是大菜鸟,学过一点c和c++,很想知道more命令是怎样实现的。
会不会是计算输出到了什么位置,快一屏就来一个"-more-",再判断键盘输入然后继续输出或退出。
请指教

我想是先计算屏幕的分辨率,如80x25,即25行,然后逐行读取文件,当读到25行的时候就提示-more-,在进行判断下一步的操作!呵呵~~,也许是这样的吧~ ;)
发表于 2004-2-3 16:19:25 | 显示全部楼层
 楼主| 发表于 2004-2-5 22:44:35 | 显示全部楼层
十分感谢
我仔细看过了简易代码,基本上能实现more的功能,不过有一点问题
一个是对于tab,当做一个字符来计算长度,而实际所占长度不一定是1。
另一个是当一行长度超过屏幕宽度时,整行输出完才处理,如果这一行在屏幕较下的位置,最上面输出可能会看不到。
还有就是输出重定向时全都乱套了。这个是不是要判断是否真的输出到标准输出才能解决?
至于标准代码还没完全看懂。水平问题。还是十分感谢了
发表于 2004-2-5 23:59:55 | 显示全部楼层
楼主的主题我想发在[程序设计讨论区]比较合适~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表