博客首页
注册
建议与交流
排行榜
加入友情链接
推荐
投诉
搜索:
帮助
再NB的肖邦,也弹不出我心中的忧伤......
It's better to burn out than to fade away!!!
tequliaSusan.cublog.cn
管理博客
发表文章
留言
收藏夹
博客圈
音乐
相册
文章
· C/C++学习
· 硬件电路
· uboot移植
· UNIX系统编程
· VIM使用与学习
· Linux网络编程
· Linux内核编程
· Linux设备驱动
· 嵌入式学习
· 杂乱心情
· Linux应用
首页
关于作者
姓名:Tequlia Lv 职业:学生 年龄:26 位置: 个性介绍:再NB的肖邦,也弹不出我心中的忧伤......
||
<<
>>
||
我的分类
文章列表 -
【置顶】不要做浮躁的嵌入式系统工程师【转载】
<DIV> <DIV> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">1. 不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN> </P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roma……
查看全文
发表于:2007-04-15 ┆
阅读(416)
┆
评论(0)
http session cookies(转载)
<p>http,session,cookie一定是困扰了大家许久了的三个词吧。</p> <p>下面跟我来。</p> <p>HTTP Session<br>一、浅析<br>HTTP协议(<a href="http://www.w3.org/Protocols/">http://www.w3.org/Protocols/</a>)是“一次性单向”协议。</p> <p>服务端不能主动连接客户端,只能被动等待并答复客户端请求。客户端连接服务端,发出一个HTTP Request,服务端处理请求,并且返回一个HTTP Response给客户端,本次HTTP Request-Response Cycle结束。</p> <p>我们看到,HTTP协议本身并不能支持服务端保存客户端的状态信息。于是,Web Server中引入了session的概念,用来保存客户端的状态信息。</p> <p>这里用一个形象的比喻来解释session的工作方式。假设Web Server是一个商场的存包处,HTTP Request是一个顾客,第一次来到存包处,管理员把顾客的物品存放在某一个柜子里面(这个柜子就相当于Session),然后把一个号码牌交给这个顾 客,作为取包凭证(这个号码牌就是Session ID)。顾客(HTTP Request)下一次来的时候,就要把号码牌(Session ID)交给存包处(Web Server)的管理员。管理员根据号码牌(Session ID)找到相应的柜子(Session),根据顾客(HTTP Request)的请……
查看全文
发表于:2008-09-02 ┆
阅读(19)
┆
评论(0)
fprintf函数的使用
最近在作Appweb在设备上的应用,考虑在程序中来写服务器的conf配置文件。就有用到fprintf()这个函数,做上层的东西比较少,查了一下man手册,fprintf函数的原型如下:<br><b> int <span class="highlight">fprintf</span>(FILE *</b><i>stream</i><b>, const char *</b><i>format</i><b>, ...);</b><br><br> FILE *fp=NULL;<br> fp=fopen(HTTP_CONF_FILE,"w");<br> if (fp==NULL){<br> err("fopen() error,file:%s!!!\n",HTTP_CONF_FILE);<br> return FAILURE;<br> } <br> fprintf(fp,"ServerRoot \"%s\"\r\n",HTTP_SERVER_ROOT);<br> fprintf(fp,"Listen %u\r\n",http_setup->net.http_port);<br> fprintf(fp,"<if SSL_MODULE>\r\n");<br>首先是生命一个FILE类型的流文件指针,调用fopen打开文件并执行写的操作, 然后调用fprintf将……
查看全文
发表于:2008-09-02 ┆
阅读(20)
┆
评论(0)
怎样在Linux系统中建立共享内存?
在UNIX通信方式中有一个共享内存,它是一种非常重要的通信方式,速度快效率高。System V 进程间通信(IPC)包括3种机制:消息队列、信号量、共享内存。消息队列和信号量均是内核空间的系统对象,经由它们的数据需要在内核和用户空间进行额外 的数据拷贝;而共享内存和访问它的所有应用程序均同处于用户空间,应用进程可以通过地址映射的方式直接读写内存,从而获得非常高的通信效率。定义共享内存的API接口函数:<br><pre class="displaycode"># include <sys/types.h><br># include <sys/ipc.h><br># include <sys/shm.h><br><br>key_t ftok(const char *pathname, int proj_id);<br>int shmget(key_t key, int size, int shmflg);<br>void* shmat(int shmid, const void *shmaddr, int shmflg);<br>int shmdt(void *shmaddr);<br>int shmctl(int shmid, int cmd, struct shmid_ds *buf);<br></pre><br> <table width="100%" border="1"><tbody><tr><td>ftok</td><td>函数用于生成一个键 值:key_t key,该键值将作为共享内存对象的唯一性标识符,并提供给为shmget函数作为其输入参数;ftok 函数的输入参数包括一个文件(或目录)……
查看全文
发表于:2008-09-01 ┆
阅读(23)
┆
评论(0)
statfs函数的应用
我想在网页上显示我的块设备比如sd卡的相关信息,怎么办?就用这个函数吧
查看全文
发表于:2008-09-01 ┆
阅读(27)
┆
评论(0)
网络程序select
在网络程序中,一个进程同时处理多个文件描述符是很常见的情况。select()系统调用可以使进程检测同时等待的多个I/O设备,当没有设备准备好时,select()阻塞,其中任一设备准备好时,select()就返回。<table width="620" align="center"><tbody><tr><td class="a14"> select()的调用形式为:</td></tr></tbody></table><table width="620" align="center"><tbody><tr><td class="a14"> #include <sys/select.h></td></tr></tbody></table><table width="620" align="center"><tbody><tr><td class="a14"> #include <sys/time.h></td></tr></tbody></table><table width="620" align="center"><tbody><tr><td class="a14"> int select(int maxfd, fd_set *readfds, fd_set *writefds, fe_set *exceptfds, const struct timeval *timeout);</td></tr></tbody></table><table width="620" align="center"><tbody><tr><td class="a14"> select的第一个参数是文件描述符集中要被检测的比特数,这个值必须至少比待检测的最大文件描述符大1;参数readfds指定了被读监控的文件描述 符集;参数writefds指定了被写监控的文件描述符集;而参数exceptfds指定了被例外条……
查看全文
发表于:2008-08-30 ┆
阅读(23)
┆
评论(0)
.word使用方法
<font color="red">ldr r1, _rWTCON <br>_rWTCON: <br>.word 0x15300000 <br>这两个语句是不是说把地址0x1530 0000 上的内容传递到r1? 而不是把0x1530 0000 放到r1 ? <br></font> <br>不是把地址0x1530 0000 上的内容传递到r1,是把地址_rWTCON上的内容放到r1,而地址_rWTCON上的内容是0x15300000。实际上就是把r1设置为0x15300000 <br><font color="red">------------------------------------------ <br>.word和0x1530 0000有什么关系?.word就是把expression上的值取出来? expression代表地址? <br></font>.word expression就是在当前位置放一个word型的值,这个值就是expression <br>举例来说, <br>_rWTCON: <br>.word 0x15300000 <br>就是在当前地址,即_rWTCON处放一个值0x15300000 <br>翻译成intel的汇编语句就是: <br>_rWTCON dw 0x15300000
查看全文
发表于:2008-08-27 ┆
阅读(24)
┆
评论(0)
.balign指令用法
<span style="color: rgb(255, 1, 2);">.balign[wl] abs-expr, abs-expr, abs-expr</span><br><br>增 加位置计数器(在当前子段)使它指向规定的存储边界。第一个表达式参数(结果必须是纯粹的数字)是必需参数:边界基准,单位为字节。例 如,'.balign 8'向后移动位置计数器直至计数器的值等于8的倍数。如果位置计数器已经是8的倍数,则无需移动。第2个表达式参数(结果必须是纯粹的数字)给出填充字节 的值,用这个值填充位置计数器越过的地方。第2个参数(和逗点)可以省略。如果省略它,填充字节的值通常是0。但在某些系统上,如果本段标识为包含代码, 而填充值被省略,则使用no-op指令填充空白区。第3个参数的结果也必须是纯粹的数字,这个参数是可选的。如果存在第3个参数,它代表本对齐命令允许跳 过字节数的最大值。如果完成这个对齐需要跳过的字节数比规定的最大值还多,则根本无法完成对齐。您可以在边界基准参数后简单地使用两个逗号,以省略填充值 参数(第二参数);如果您在想在适当的时候,对齐操作自动使用no-op指令填充,本方法将非常奏效。<br><br>.balignw 和.balignl是.balign命令的变化形式。.balignw使用2个字节来填充空白区。.balignl使用4字节来填充。例 ……
查看全文
发表于:2008-08-27 ┆
阅读(27)
┆
评论(0)
我的Ubuntu常用软件以及配置说明
每次重装系统的时候都是要到google上搜索一堆的东西,很不方便,而且我的记性很不好容易忘。准备逐步的完善这篇文档,给自己以后再配置系统的时候能够方便一些。<br>(1) 重装系统后,我做的第一件事情就去更新一下sourcelist,在这里贴出我的源列表:<br>deb http://archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse<br>deb http://archive.ubuntu.com/ubuntu/ hardy-security main restricted universe multiverse<br>deb http://archive.ubuntu.org.cn/ubuntu-cn/ hardy main restricted universe multiverse<br>deb http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse<br>deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse<br>deb-src http://archive.ubuntu.com/ubuntu/ hardy-security main restricted universe multiverse<br>deb-src http://archive.ubuntu.org.cn/ubuntu-cn/ hardy main restricted universe multiverse<br>deb-src http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse<br>deb http:/……
查看全文
发表于:2008-08-21 ┆
阅读(31)
┆
评论(0)
Linux中patch文件的使用(转载)
<font size="3"><span style="font-family: 宋体;"> <font size="2">因为在</font></span></font><font size="2"><span lang="EN-US"><font face="Times New Roman">u-boot</font></span><span style="font-family: 宋体;">移植过程中,有几处通用文件要修改,如果每次都要手动修改就太麻烦了。制作补丁可以解决这个问题。</span></font> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-family: 宋体;">学习资料的收集比较简单,方法一类似于这种初级问题网上资料非常丰富,</span><span lang="EN-US"><font face="Times New Roman">google</font></span><span style="font-family: 宋体;">或者</span><span lang="EN-US"><font face="Times New Roman">baidu</font></span><span style="font-family: 宋体;">搜索一下,然后选择有价值的资料,方法二是阅读</span><span lang="EN-US"><font face="Times New Roman">man</font></span><span style="font-family: 宋体;">在线文档。完成收集工作,当然最终要在自己的</span><span lang="EN-US"><font face="Times New Roman">Linux</font></span><span style="font-family: 宋……
查看全文
发表于:2008-08-15 ┆
阅读(48)
┆
评论(0)
ubuntu挂载NTFS分区
1.首先需要安装 fuse,我测试的是 2.6.0 pre3 测试版<br> <a target="_blank" href="http://jaist.dl.sourceforge.net/sourceforge/fuse/fuse-2.6.0-pre3.tar.gz" rel="external" class="ubblink download">fuse-2.6.0-pre3.tar.gz</a><br> <br> 解压后,进入 fuse-2.6.0-pre3目录<br> <br> ./configure<br> make<br> sudo make install<br> <br> 2.然后下载安装 ntfs-3g<br> <br> <a target="_blank" href="http://mlf.linux.rulez.org/mlf/ezaz/ntfs-3g-20070714-BETA.tgz" rel="external" class="ubblink download">ntfs-3g</a><br> <br> 解压,进入相应目录编译安装<br> <br> ./configure<br> make<br> sudo make install<br> <br> 3.测试并挂载。比如我的 hda6 是 NTFS去分区,用下面命令行测试能否成功挂载<br> <strong><span style="padding: 0pt 2px; background-color: rgb(255, 255, 255);"></span></strong><br> <strong>sudo ntfs-3g /dev/sda2 /mnt/tmp -o silent,umask=0,locale-zh_CN.utf8</strong><br> <br> 相关命令:<br> <br> umount -a 卸载全部挂载分区<br> mount -a 挂载全部分区<br> <br> 如果需要系统启动自动挂载则需要……
查看全文
发表于:2008-08-13 ┆
阅读(55)
┆
评论(0)
嵌入式编程字节对齐问题
<h2>一.什么是字节对齐,为什么要对齐?</h2> <p>一.什么是字节对齐,为什么要对齐?</p> <p> 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。<br> 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那 么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数 据。显然在读取效率上下降很多。</p> <p>二.字节对齐……
查看全文
发表于:2008-08-13 ┆
阅读(40)
┆
评论(0)
Linux动态库搜索路径
众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且 该动 态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及 该动态库的其它资源了。在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。 <p style="text-indent: 20pt;"><span style="font-family: 黑体;">方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径。 </span></p> <p style="text-indent: 20pt;">可以通过编辑配置文件/etc/ld.so.conf来指定动态库的搜索路径,该文件中每行为一个动态库搜索路径。每次编辑完该文件后,都必须运行命令ldconfig使修改后的配置生效。我们通过例1来说明该方法。 </p> <p style="text-indent: 20pt;">例1: </p> <p style="text-indent: 20pt;">我们通过以下命令用源程序pos_conf.c(见程序1)来创建动态库 libpos.so,详细创建过程请参考文[1]。</p> <p style="text-indent: 35pt;"># gcc -c pos_conf.c<br> ……
查看全文
发表于:2008-08-12 ┆
阅读(38)
┆
评论(0)
Linux2.6内核开机启动logo
2.6内核启动Logo<br> 在配置内核的时候选中了启动Logo的支持。 <br> 使用下面的方法可以将企鹅的Logo换成自己喜欢的任意图片。 <br> 首先准备一幅自己喜欢的图片,然后将该图片保存成png格式,例如linuxlogo.png。在Linux下使用下面的命令: <br> # pngtopnm linuxlogo.png > linuxlogo.pnm <br> # pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm <br> # pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm <br> mv linuxlogo224.ppm logo_linux_clut224.ppm<br> 然后将logo_linux_clut224.ppm替换$WORKSPACE/linux-2.6.8.1/drivers/video/logo文件夹中的logo_linux_clut224.ppm<br> (最好先做好备份),重新编译内核,启动之后就可以在屏幕左上方看到自己的Logo了。
查看全文
发表于:2008-07-28 ┆
阅读(71)
┆
评论(0)
enum枚举型变量的使用
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 <br><br>举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔合中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! <br><br><code><font color="#0000ff">enum</font> box{pencil,pen};<font color="#008000">//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。</font> <br></code><br><br>在这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义! <br><br><code><font color="#0000ff">enum</font> box{pencil,pen}; <br><br><font color="#0000ff">enum</font> box box2;<font color="#008000">//或者简写成box box2;</font> <br></code><br><br>再有一种就是在声明的时候同时定义。 <br><br><code><font color="#0000ff">enum</font> {pencil,pen}box,box2; <font color="#008000">//在声明的同时进行定……
查看全文
发表于:2008-07-24 ┆
阅读(100)
┆
评论(0)
用共享内存方法实现进程之间的通讯
在两个进程间共享数据的方法,至今为止我们只说过利用管道。管道只是利用了输入输出重定向的原理,非常简单。而且只能在父子进程间使用。很多场合下这种方法是无法满足我们的要求的。<br>那么现在,我们又有了一种新的方法——利用共享内存(shared memory)。这可以使我们在任意两个进程间传递数据,而且也是相对简单容易实现的一个方法。<br>注意:在正常情况下,一个进程的所使用的内存区是不允许其它进程访问的。这里我们要开辟的共享内存是例外。<br>我们来做一个简单的剪贴板。从标准输入向mcut输入数据,mcut将其放在共享内存中,然后mpaste从共享内存中读出数据并显示。<br><br>/* mcut.c */<br>#include <sys/types.h><br>#include <sys/ipc.h><br>#include <sys/shm.h><br>#include <stdio.h><br><br>int main()<br>{<br> key_t shmkey;<br> int shmid , in_tmp ;<br>……
查看全文
发表于:2008-07-24 ┆
阅读(60)
┆
评论(0)
Linux多线程学习
Linux下的多线程编程 <br>作者: 姚继锋 (2001-08-11 09:05:00) <br>1 引言<br> 线程(thread)技 术早在60年代就被提出,但真正应用多线程到 *** 作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线 程,这样多线程就意味着多进程。现在,多线程技术已经被许多 *** 作系统所支持,包括Windows/NT,当然,也包括Linux。<br> 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。<br> 使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务 *** 作方式。我们知道,在Linux系统下,启动一个新的进程必须分配给它独立的地址<span><a id="hl_11" class="qs_highlight1" style="font-size: 1em;" href="http://clk.qunsee.com/click/click.php?cpid=5604&ads_id=985&pid=99005765&cid=5794&url=http%3A//union.139.com/Interface/Channel/Redirect.aspx%3Ftypeid%3D2%26siteid%3Dwz2005%26upid%3D410%26busspage%3DmobileMail%26channelid%3D416%26params%3Dcid%7E1%7Caid%7E985%7Csid%7E……
查看全文
发表于:2008-07-24 ┆
阅读(64)
┆
评论(0)
wget命令的用法
wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget。 <p> $ wget -r -np -nd <a class="akey" href="http://example.com/packages/" target="_blank"><font color="#000099">example.com/packages/</font></a> </p> <p> 这条命令可以下载 <a class="akey" href="http://example.com/" target="_blank"><font color="#000099">example.com</font></a> 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。 </p> <p> $ wget -r -np -nd --accept=iso <a class="akey" href="http://example.com/centos-5/i386/" target="_blank"><font color="#000099">example.com/centos-5/i386/</font></a> </p> <p> 与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。 </p> <p> $ wget -i filename.txt </p> <p> 此命令常用于批量下载的情形,把所有需要下载文件的地址放到 fil……
查看全文
发表于:2008-07-23 ┆
阅读(44)
┆
评论(0)
VIM编码知识
<p>此文讲解的是vim编辑多字节编码文档(中文)所要了解的一些基础知识,注意其没有涉及gvim,纯指字符终端下的vim。<br> <strong>vim编码方面的基础知识:</strong></p> <p>1,存在3个变量:<br> encoding—-该选项使用于缓冲的文本(你正在编辑的文件),寄存器,Vim 脚本文件等等。你可以把 ‘encoding’ 选项当作是对 Vim 内部运行机制的设定。<br> fileencoding—-该选项是vim写入文件时采用的编码类型。<br> termencoding—-该选项代表输出到客户终端(Term)采用的编码类型。<br> 2,此3个变量的默认值:<br> encoding—-与系统当前locale相同,所以编辑文件的时候要考虑当前locale,否则要设置的东西就比较多了。<br> fileencoding—-vim打开文件时自动辨认其编码,fileencoding就为辨认的值。为空则保存文件时采用encoding的编码,如果没有修改encoding,那值就是系统当前locale了。<br> termencoding—-默认空值,也就是输出到终端不进行编码转换。</p> <p>由此可见,编辑不同编码文件需要注意的地方不仅仅是这3个变量,还有<strong>系统当前locale</strong>和<strong>、文件本身编码以及自动编码识别</strong>、<strong>客户运行vim的终端所使用的编码类型……
查看全文
发表于:2008-07-23 ┆
阅读(60)
┆
评论(0)
应用busybox制作根文件系统
<p align="center"><font face="黑体" size="5">用busybox制作嵌入式Linux的文件系统</font></p> <p align="center"><font face="楷体_GB2312" size="4"> </font></p> <p><font face="Verdana"> 1 busybox简介 </font></p> <p><font face="Verdana"> 熟悉嵌入式Linux的人对busybox一定不会陌生。它被非常形象地称为嵌入式Linux系统 中的“瑞士军刀”,因为它将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。虽然与相应的GNU工具比较起来,busybox所提供的功能 和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中,已经足够了。 </font></p> <p><font face="Verdana"> busybox在设计上就充分考虑了硬件资源受限的特殊工作环境。它采用一种很巧妙的办法减少自己 的体积:所有的命令都通过“插件”的方式集中到一个可执行文件中,在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。例如最终生成的可执行文 件为busybox,当为它建立一个符号链接ls的时候,就可以通过执行这个新命令实现列目录的功能。采用单一执行文件的方式最大限度地共享了程序代码, 甚至连文件头、内存中的程序控制块等其他操作系统资源都共享了,对于资源比较紧张……
查看全文
发表于:2008-07-11 ┆
阅读(102)
┆
评论(0)