stty命的实现.doc

上传人:夏** 文档编号:562161720 上传时间:2023-09-01 格式:DOC 页数:19 大小:169KB
返回 下载 相关 举报
stty命的实现.doc_第1页
第1页 / 共19页
stty命的实现.doc_第2页
第2页 / 共19页
stty命的实现.doc_第3页
第3页 / 共19页
stty命的实现.doc_第4页
第4页 / 共19页
stty命的实现.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《stty命的实现.doc》由会员分享,可在线阅读,更多相关《stty命的实现.doc(19页珍藏版)》请在金锄头文库上搜索。

1、stty命令有点复杂,虽然本人已经尽可能的写的简洁,不过还是比较复杂。程序有两个部分是由已有的代码改写的,一个是命令行参数的分析,另一个是控制字符的转换函数(控制字符的转换函数(cat)的原作者:Torbjorn Granland)。程序实现了部分stty的功能,主要的功能如下:-a,-g,-F,这三个参数基本的表现和标准一样,不过有的输出会有差别(比如vtdly会以 -vtdly或者vtdly的形式输出而不是vt0,vt1这样的格式),所有能够修改的参数都在mc_cc_buf,mc_iflg_buf, mc_oflg_buf,mc_cflg_buf,mc_lflg_buf中已经声明,不在这5

2、个数组中声明的参数无法修改(如果出现这5个数组中没有出 现的程序将由于非法参数的出现而结束进程)。程序的结束时的返回值如下:1: tcgetattr失败2: tcsetattr失败3: 输出终端信息时同时选择设置终端信息4: 重置文件描述符失败5: 非法的参数6: 程序异常(内存错误,内存用尽等)程序作者:莫尘/mc_nns 程序开源,任何人可以任意使用和修改 1 /* 2 * 程序为stty命令的实现,命令的实现参考了标准,命令支持的参数为-a, -g, -F 3 * -a详细的输出终端信息,-g以不可视的风格输出终端信息,-F替换设备 4 * 所有能修改的信息都在mc_cc_buf, mc

3、_cflg_buf, mc_lflg_buf, mc_iflg_buf, mc_oflg_buf 5 * 程序可以修改这5个程序所指明的终端的特性,除此,程序还能修改 6 * line,ispeed, ospeed, rows, cols/colunms, min, time这7种终端特性 7 * 程序的返回值: 8 * 1: tcgetattr失败 9 * 2: tcsetattr失败 10 * 3: 输出终端信息时同时选择设置终端信息 11 * 4: 重置文件描述符失败 12 * 5: 非法的参数 13 * 6: 程序异常(内存错误,内存用尽等) 14 * 15 * 程序作者:莫尘/mc_

4、nns; 注:mc_character_to_visible源自Torbjorn Granland的cat 16 */ 17 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28 29 typedef struct mode 30 char *name; 31 tcflag_t val; 32 int size; /* 名字的长度 */ 33 mc_mode; 34 35 typedef struct s

5、peed 36 char *name; 37 int val; /* 比特率的真值 */ 38 speed_t speed; /* 比特率的数值 */ 39 int size; /* 比特率所指字符串的长度 */ 40 mc_speed; 41 42 static mc_speed mc_speed_buf = 43 0, B0, 0, 1 , 44 50, B50, 50, 2 , 45 75, B75, 75, 2 , 46 110, B110, 110, 3 , 47 134, B134, 134, 3 , 48 150, B150, 150, 3 , 49 200, B200, 200

6、, 3 , 50 300, B300, 300, 3 , 51 600, B600, 600, 3 , 52 1200, B1200, 1200, 4 , 53 1800, B1800, 1800, 4 , 54 2400, B2400, 2400, 4 , 55 4800, B4800, 4800, 4 , 56 9600, B9600, 9600, 4 , 57 19200, B19200, 19200, 5 , 58 38400, B38400, 38400, 5 , 59 #ifdef EXTA 60 exta, B19200, 19200, 5 , 61 #endif 62 #ifd

7、ef EXTB 63 extb, B38400, 38400, 5 , 64 #endif 65 #ifdef B57600 66 57600, B57600, 57600, 5 , 67 #endif 68 #ifdef B115200 69 115200, B115200, 115200, 6 , 70 #endif 71 #ifdef B230400 72 230400, B230400, 230400, 6 , 73 #endif 74 #ifdef B460800 75 460800, B460800, 460800, 6 , 76 #endif 77 #ifdef B500000

8、78 500000, B500000, 500000, 6 , 79 #endif 80 #ifdef B576000 81 576000, B576000, 576000, 6 , 82 #endif 83 #ifdef B921600 84 921600, B921600, 921600, 6 , 85 #endif 86 #ifdef B1000000 87 1000000, B1000000, 1000000, 7 , 88 #endif 89 #ifdef B1152000 90 1152000, B1152000, 1152000, 7 , 91 #endif 92 #ifdef

9、B1500000 93 1500000, B1500000, 1500000, 7 , 94 #endif 95 #ifdef B2000000 96 2000000, B2000000, 2000000, 7 , 97 #endif 98 #ifdef B2500000 99 2500000, B2500000, 2500000, 7 ,100 #endif101 #ifdef B3000000 102 3000000, B3000000, 3000000, 7 ,103 #endif104 #ifdef B3500000 105 3500000, B3500000, 3500000, 7

10、,106 #endif107 #ifdef B4000000 108 4000000, B4000000, 4000000, 7 ,109 #endif110 NULL, 0, 0, 0 111 ;112 113 static mc_mode mc_cc_buf = 114 intr, VINTR, 4 ,115 quit, VQUIT, 4 ,116 erase, VERASE, 5 ,117 kill, VKILL, 4 ,118 eof, VEOF, 3 ,119 time, VTIME, 4 ,120 min, VMIN, 3 ,121 swtch, VSWTC, 5 ,122 sta

11、rt, VSTART, 5 ,123 stop, VSTOP, 4 ,124 susp, VSUSP, 4 ,125 eol, VEOL, 3 ,126 rprnt, VREPRINT, 5 ,127 discard, VDISCARD, 7 ,128 werase, VWERASE, 6 ,129 lnext, VLNEXT, 5 ,130 eol2, VEOL2, 4 ,131 NULL, 0, 0 ,132 ;133 134 static mc_mode mc_cflg_buf = 135 #ifdef CBAUD136 cbaud, CBAUD, 5 ,137 #endif138 #i

12、fdef CBAUDEX139 cbaudex, CBAUDEX, 7 ,140 #endif141 #ifdef CIBAUD142 cibaud, CIBAUD, 6 ,143 #endif144 #ifdef CMSPAR145 cmspar, CMSPAR, 6 ,146 #endif147 #ifdef CRTSCTS148 crtscts, CRTSCTS, 7 ,149 #endif150 csize, CSIZE, 5 ,151 cs5, CS5, 3 ,152 cs6, CS6, 3 ,153 cs7, CS7, 3 ,154 cs8, CS8, 3 ,155 cstopb, CSTOPB, 6 ,156 cread, CREAD, 5 ,157 parenb, PARENB, 6 ,158 parodd, PARODD, 6 ,159 hupcl, HUPCL, 5 ,160

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号