快速业务通道

编程笔记

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-17
1. 管道和两次重定向是否等价? 一般情况下,我们说这两个操作能够实现同样的功能. >> ls > aaa grep XXX < aaa rm aaa >> ls | grep XXX 在这个时候,两种操作是等价的,甚至管道要好一些,不需要考虑文件aaa是否存在.但是需要注意的是,管道操作相当于建立子Shell,因此不改变原来Shell的变量.比如 >> a = origin cat file | read a echo $a 输出结果依然是origin.而如果采用重定向的方法,就会改变a的值.例程中有 >> cat file | while read a do echo $a done 回显时候,并没有出管道的子Shell,因此可以显示出File保存的内容.与上面一个例子不同. 2. 脚本中的空格问题. 和一般C编程很不一样,有的脚本对运算符左右的空格要求非常严格,不小心多一个空格或者少一个空格,就会报错.比如,在SHELL脚本中,if后面的条件,如果是采用[]的写法,括号左右加空格,比如 >>if [ -f "$file" ] 就是正确语句,而如果按照下面的写法,就有可能报错(测试的时候报的是词法错误). >>if [ -f "$file"] 再举个例子,是模块的脚本.在2.6的内核下,自己编写的模块,脚本中需要用M=指出该模块的位置.而M=中间不能加空格,而=后面也最好不要加空格.否则make不能通过. 3. 内核栈大小 在内核中不要声明比较大的数组,内核栈非常小.x86体系结构中,32位系统是4K,64位系统是8K.如果声明了比较大的数组,在引用的时候,很可能造成内存错误,然后系统就崩溃了.(调试的时候,居然把make例程给搞坏了!要么就是OS panic!)这样的程序放在用户态是正确的,逻辑上是正确的,于是此时内核的panic就往往摸不到头脑.一定要注意!

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号