免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2416 | 回复: 3
打印 上一主题 下一主题

如何初始化TTY完成以下功能的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-18 22:34 |只看该作者 |倒序浏览
20可用积分
对于tty的初始化很有疑问,就是启动一个shell,如何能够完成超長命令的自动换行的?
比如,一个有100个字符的命令"aaaaaaaaaaaaaa........aaa",当在shell里面敲的时候,当超过terminal显示的长度的时候,terminal(比如gnome terminal)好像能够自动将超过一行的换行输出。但是将terminal大小手工拉长,又回到一行进行显示。

如下例:
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa

如果把terminal拉长,就变成:
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa


这是怎么做的?
有三种可能:
1. gnome terminal中做的。
2. shell对tty初始化的时候做的。
3. shell本身有cache的功能进行显示。

其中,3不太可能,1也不太可能,那么只有2了。但是shell怎么做的呢?

看了以下shell的源代码,好像找不到它是在哪里做的。

有谁清楚的,请示下。

论坛徽章:
0
2 [报告]
发表于 2009-02-18 23:16 |只看该作者
终端的尺寸改变的时候会有相应的信号。设置一个信号处理函数就可以了。(我的看法)

也可以判断终端的边框位置,自动换行。

论坛徽章:
0
3 [报告]
发表于 2009-02-19 12:50 |只看该作者
那么你觉得是在gnome  terminal里面设置了一个信号处理函数?有可能!

每当size_request的时候就去调整输出? 去看看gnome terminal的源码去!

论坛徽章:
0
4 [报告]
发表于 2009-02-19 17:55 |只看该作者
知道了,是TTY里的"ECHO", 猜测可能是在设置了ECHO后,每当一行超常的命令输入并且超过了terminal的边界,这个ECHO就向TTY的driver发送一个信号,再联系显卡的driver告诉显示换行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP