跳至主要内容

博文

目前显示的是 2009的博文

Linux程序设计入门 - fork, pthread, and signals

在UNIX程序设计中,学会fork及signal的运用,算是相当基本的功夫。  fork()及signal经常运用在daemon守护神这一类常驻程序,另外像 a4c.tty/yact/chdrv这些中文终端机程序也会用到,一般如 Mozilla/Apache/Squid等大程序几乎都会用到。  虽 然在UNIX下的程序写作,对thread的功能需求并非很大,但thread在现代的 作业系统中,几乎都已经存在了。pthread是Linux上的thread函数库,如果您 要在Linux下撰写多线程程序,例如MP3播放器,熟悉pthread的用法是必要的。  pthread及signal都可以用一大 章来讨论。在这里,我只谈及最简单及常用的技巧,当您熟悉这些基本技巧的运用后,再找一些专门深入探讨pthread及signal 程序写作的书籍来研究。这些进阶的写法,用到的机会较少,将层次分明,学习速度应该会比较快。  程序分支fork() fork()会产生一个与父程序相同的子程序,唯一不同之处在于其process id(pid)。 如果我们要撰写守护神程序,或是例如网络伺服器,需要多个进程来同时提供多个连线,可以利用fork()来产生多个相同的进程。 函数声明 pid_t fork(void);  pid_t vfork(void); 返回值: -1 : 失败。    0 : 子程序。  >0 : 将子程序的process id传回给父程序。 在Linux下fork()及vfork()是相同的东西。 范例一: fork.c 在这个范例中,我们示范fork()的标准用法。 #include  #include  #include void main(void)  {    pid_t pid;   printf("hello\n");    pid = fork();   switch (pid) {      case -1: printf("failure!\n"); break;      case  0: printf("I am child!\n"); break;      default: printf("my child is %d\n",pid); brea

【转贴】GNU LD用法

1、什么是ld?它有什么作用?       ld是GNU binutils工具集中的一个,是众多Linkers(链接器)的一种。完成的功能自然也就是链接器的基本功能:把各种目标文件和库文件链接起来,并重定向它们的数据,完成符号解析。Linking其实主要就是完成四个方面的工作:storage allocation、symbol management、libraries、relocation。       ld可以识别一种Linker command Language表示的linker scriopt文件来显式的控制链接的过程。通过BFD(Binary Format Description)库,ld可以读取和操作COFF(common object file format)、ELF(executable and linking format)、a.out等各种格式的目标文件。   2、常用的选项   -b TARGET  设置目标文件的文件格式 -e ADDRESS 设置目标文件的开始地址 -EB  链接big-endian的目标文件 -EL  链接small-endian的目标文件 -l LIBNAME    创建执行程序时要链接的库文件(比如某个库为test,则可以为-ltest) -L DIRECTORY  寻找要链接的库文件时搜索的文件路径 -o FILE  设置输出文件的名字 -s  去除输出文件中的所有符号信息 -S  去除输出文件中的调试符号信息 -T FILE  读取链接描述脚本,以确定符号等的定位地址 -v  输出ld的版本信息 -x  去除所有的局部符号信息 -X  去除临时的局部符号信息,默认情况下会设置这个选项 -Bstatic   创建的输出文件链接静态链接库 -Bdynamic  创建的输出文件链接动态链接库 -Tbss ADDRESS  设置section bss的起始地址 -Tdata ADDRESS 设置section data的起始地址 -Ttext ADDRESS 设置section text的起始地址   3、链接描述脚本       链接描述脚本描述了各个输入文件的各个section如何映射到输出文件的各section中,并控制输出文件中section和符号的内存布局

【转帖】软件人才划分

一、门外汉型 :几乎没有学习能力,更没有创新能力。比如,买了一本《一步一步跟我学VB编程》之类的书,对照书上写的,把例子程序给做出来了,还把例子程序的某些窗口标题给修改了一下。然后,就自认为自己可以做软件开发工作了。到处递简历,应聘的职位为软件开发工程师。这类人,以刚毕业的计算机专业的大学生为多(当然,刚毕业的学生中也有非常高级的人才)。读书期间,就以玩游戏为主,考试的时候,就搞点舞弊过关。    二、入门型 :该类型的人员(不叫人才,所以叫人员),可能入门某一种到两种开发语言,10年前,我上大学的时候,这类人的典型特点是热衷于DOS命令的n种用法。比如,dir命令的各种参数。学习过basic语言,知道C语言中printf函数的各种参数的用法,到了2005年,这类人是热衷于windows下的注册表,热种于在自己的机器上安装各种开发工具(VB,VC,dephi,asp等)。但是,仅仅停留在编译开发工具中自带的几个例子程序中。(可能还会做点修改)。经过一段时间的学习,可能还自己能够编写个简单的windows应用程序,修改注册表的程序等等。其很多时间还是在玩游戏,上QQ聊天泡MM,看了一篇如何修改某病毒的文章,一定会对照文章上的说明,把病毒给修改了,然后到处发,以显示自己的能力。当然,很多时候,该类人即使对照文章的说明,也不能将病毒修改。那就找那些带配置工具的黑客程序去弄吧,比如。BO等就是他们最常用来炫耀的。中国的破解者与初级黑客,绝大部分是这一类人。懂的不多,还喜欢炫耀(为炫耀目的的破解和修改病毒就是这一类人的最大特点)。该类人员,一般都没有在软件公司从事软件开发工作。    三、基本型人才 :该类型一般是大学毕业,并且从事软件开发工作超过2年的人为多,至少比较熟悉一门语言(以VB,dephi,java,asp等其中的一种)。也有少数人熟悉C或者C++,但是如果是C或者C++,一般对指针等概念还是似懂非懂的状态。哦,对了,该类人员可能还会在自己的机器上安装过linux或者sco unix等。但由于对自己没有信心,大部分人会在半个月之后把linux删除。该类型人才,有一定学习能力。创新能力为零。适合培养成为软件蓝领,如果人际交往能力还可以的话,可以培养成为一个初级营销人员。该类型的人典型的特点是:你要他做个项目,他首先就会问:用什么语言?(因为用他不熟悉的语言对他来

【转】搞笑短信

1.三老鼠吹牛,第一个老鼠说我每天将老鼠药当饭吃,第二个老鼠说我常用老鼠夹来锻炼身体,第三个鼠满不在乎说道,看到旁边那只怀孕的猫了嘛,那是我干的 2.有两个人去打猎,突然看见只老虎,两人撒腿就跑.跑着半截一个人说:哥们我不行了,别跑了咱跟老虎死磕吧."别操蛋了,我跑不过老虎我还跑不过你!" |||3.歹徒闯入民宅强*妇女遭到誓死反抗,丈夫下地回来见老婆被歹徒压住,抡起铁铲怒拍,就听老婆骂道:"该死的,反抗了半天,被你一铲子给拍进去了" 4.看哪个银行缩写最牛.中国建设CBC(存不存)中国银行BC(不存)中国农业ABC(啊不存)中国工商ICBC(爱存不存)民生银行CMSB存吗傻逼 5.毛主席指着护士的胸问:这是啥子? 护士说:是胸主席.主席说:下面是啥子?这是肚脐主席.主席又问:再往下是啥子?是毛--主席! 6.青蛙和袋鼠去嫖妓,袋鼠三两下完事,听见隔壁整夜"一二三嘿!一二三嘿!一二三嘿"好羡慕!次日早上袋鼠说青蛙你好棒!青蛙:靠!老子一夜都没跳上床 7.好久没你消息了,这两天总想你,心里很乱,寻遍你爱去的池塘;就餐的小屋;睡觉的草坪;仍不见你踪影,我心都快碎了,养这么大的猪咋说丢就丢了呢? 8.狮子和熊分别在果树旁便便,一个月后,狮子便便的树比熊便便的树长得粗壮,于是熊说了句话:狮屎胜于熊便啊! 9.好消息:国家妓委调低小姐收费标准,将对小姐实行单向收费:只收插入费,免收拔出费;sj按流量计费,杜绝不sj乱收费现象;体外sj免收精虫漫游费 10.倪苹到蒙城作客,上一牛鞭,味道特好,问曰何物?冯巩说,牛群身上有!牛群说,冯巩身上也有!倪萍问:我身上有吗?两人齐答:你身上有时有.有时没有 |||11.一男去医院,医生问其何处不适 男答:听后不要笑 医生:当然 男士脱裤,其小弟仅火柴粗 医生大笑,男士怒道:人家都肿好几天了,你还笑! 12.女警宿舍失火一女警光着下身逃出.后发现内裤未穿,逐叫过警犬闻闻其两腿之间,示意警犬去房间叼其内裤.不一会,警犬从火里冲出,口里叼着根警棍. 13.(_!_)普通的屁屁 (__!__)胖屁屁 (!)紧绷的屁屁 (_._)平坦的屁屁 (_*_)发炎的屁屁 (_o_)痔疮的屁屁 14.一女党员被捕,敌人逼她写信引首长上钩 女党员逼于无奈只有写,写完后偷偷从私处拨根体毛夹在信中

【转】毕业后知道的潜规则

一,毕业后才知道原来学生花钱最大手大脚  在学校的时候从来都是过的是衣食无忧的生活。钱的概念都不知所云,更何况花钱?待到毕业时,花钱容易赚钱难!看脸色、拍马屁;察颜观色、见风使舵!为的是那几毛剥削无几的血汗钱!平日花钱哪知俭?毕业方知挣钱难! 二,毕业后才知道原来学习是如此那般的重要   学校本是学习、上进的乐园、天堂。到了才知道学校是多么的令学生放纵、迷茫!仿佛考上大学后,要全力弥补高中时代学习所留下的创伤!莘莘学子哪,学习好比逆水行舟!社会行走才觉所知仅仅一无所有! 三,毕业后才知道原来校园恋情真的有些虚无缥缈   还在感叹"校园"号称绝无仅有的一方净土,便开始融入这"新型流氓"生产基地,成为其中的一份子!女人翻脸胜过翻书多,男人换偶更比换衣快!仿佛都应了一句话:"21世纪,不是大鱼吃小鱼,是快鱼吃慢鱼!"为了避免稍慢一步便只能捡些残羹冷炙的结果,也只能硬着头皮扛下去!美其名曰:"人不风流枉少年,耶!"步入社会,方悟人情与世故!觉悟,觉误! 四,毕业后才知道原来大学生已经没人要   愁啊愁!为了工作就白了头!现今的大学生,就是社会的最底层!一出校门做苦工,少人关心少人问!每周六日火爆的人才市场,无论夏热还是冬寒,总是那么如此的迷人!吸引了无数步入社会的"大"学生。为什么这么多的单位对大学生总是一而再的亮红灯??? 五,毕业后才知道原来专业对口的的确很少   不离校根本不知道!一出校门就吓一跳!拿着简历满街跑,对口专业真难找!学历文凭不顶用,能力水平才看好!学校学的那些,第一,太过古老,第二,学的也不好……实在不成,只能找份工作糊口,一了百了! 六,毕业后才知道原来大学生活不应该有烦恼  在校生活,光嫌不好!老师管教,考试烦恼!走入社会才发现,学生简直是活神仙!社会生活真辛酸!不仅毕业开头难,简直事事都为难!领导张张嘴,跑的累断腿!钞票一天比一天难赚,居然女友妈妈都嫌我长得寒酸!虽然已没日没夜的苦干实干,但前方依然怎么也看不到岸! 七,毕业后才知道原来宿舍生活挺好 离开母校后,住宿都成了困难!为省房租几毛钱,差点把嘴皮都磨穿!以前觉得宿舍好吵,现在自己反倒更好……再也不用担心自己的"沙宣"被舍友偷偷用完,再也不用为了讨论一件事而争吵呐喊!一

【转】安利之歌

算你恨:百分之三,干劲冲天;百分之六,没法看透;百分之九,夸下海口; 做到十二,有点负债;做到十五,倍感辛苦;做到十八,货压在家; 金章银章,穷的叮当;做到直系,大伤元气;钻石翡翠,千人之上; 几年拼搏,辛苦劳累;家人不顾,总搞聚会;弥补损失,讲课收费; 成冠环宇,彼此戒备;自吹自擂,互相排斥;制造气氛,巧妙搭配; 策划分享,心领神会;对内误导,对外防备;佣金制度,愚民到位; 步步陷阱,环环相对;保健护肤,样样含税;净营业额,不知所谓; 销售利润,赚给了谁?顾客优惠,心里安慰;平民百姓,几个消费? 同类产品,我最不贵?摇旗呐喊,环保人类;又哭又笑,问心有愧; 广州武汉,走南闯北;车船门票,吃住自费;不干不行,名声在外; 骑虎难下,内心受罪;月月归零,周周开会;部门脱落,夜不能寐; 前期辅导,成了累赘;电话沟通,甲醒乙睡;业绩下滑,梦想破碎; 画饼充饥,自欺腹胃;进退两难,无言应对;公司头奖,塑造领队; 旅游出国,山珍海味;七十万元,激动流泪;一人成功,千人垫背; 热心公益,回溃社会;慷慨捐助,源于诸位;文化在外,用心在内; 老板谋略,谁人领会;体验产品,变相消费;月月卖货,不挣倒赔; 串门听课,部门反对;听话照办,吃亏上当;每月保级,明珠翡翠; 策划冲奖,狼心狗肺;一个银章,百位来赔;囤货归零,受益人谁? 钱财耗尽,欲哭无泪;父母妻儿,何言以对?反思自己,是非不辨, 思想受控,利令智昏;群星捧月,抱成一团;前仆后继,精神可贵; 执迷不悟,自我陶醉;囊中羞涩,无人敬佩;对比收入,方觉惭愧; 赔钱也值,学会营销;百感交集,自我安慰;专职从事,收入极微; 竞争者众,团队难建;南来北往,时光荒废;梦想是有,目标错位; 自我掂量,自知者贵;六十万人,盲目追随;不知深浅,节节败退; 新老朋友,包括早内;百万人众,皇冠几位?提到安利,心酸流泪; 回首安利,从新定位;离开安利,聪明之最;再不醒悟,实在愚昧; 以前不懂,无人怪罪;明知故犯,违背天理;走错方向,前途不亮; 害人害己,形同犯罪;与人相处,真诚可贵;安利错误,趁早撤退; 另选事业,重建团队;弯路既走,算教学费;赔点亏点,也无所谓; 营养美容,样样学会;运作能力,人人俱会;再创辉煌,人称贤惠; 众人经历,真实描绘;接受评论,坦诚以对;实事求是,问心无愧; 安利赞歌,令人回味。

【转】80后生活的潜规则

1、 出门公交10分钟以上,肯定带PSP或者MP3 2、 可以不看电视,但电脑是必需品 3、 出门蹦达去三件宝:手机,钥匙,几十块零... 4、 永远不知道钱花哪了,没怎么吃,没怎么穿... 5、 对明星只有喜欢和讨厌,没有崇拜 6、 熟人面前是话唠,生人面前一言不发 7、 爱好中必定有一项是睡觉 8、 无论使用什么电器,从来不注意看说明书 9、 买衣服只去小店、专卖店、淘宝网 10、减肥是永恒不变的话题和行动 11、饿了就吃,经常早饭午饭并在一起吃 12、打字的手法相当不准确,但还是打的很快... 13、凌晨12点前和很少会入睡 14、不会浪费很长时间做顿饭 15、什么都可以"随便",因为没那么多时间... 16、去KTV一般都是麦霸 17、玩游戏的兴趣远远大过学习或者工作

【转】为计划经济正名

为计划经济正名 月落如烟 计划经济这个词,如今无论是在民间还是在学术界都可谓是声名狼藉了。但凡肯定改革之人,就必然把计划经济这个词等同于效率 低下、无能、大锅饭、官僚体制等等贬义词,从而把计划经济打入十八层地狱不得翻身。虽然中央还算清醒,知道还是要搞宏观控 制,而不能完全像某些激进的自由派经济学家所要求的那样全面自由市场化,但是却再也不敢说计划经济这个词了,取而代之的是 宏观调控这个术语,并且反复宣称中国搞的是“社会主义市场经济”,着重强调它的市场性而不提计划了。      当然,无论是我们的课本,还是一些头脑清醒的经济学家、中央领导,都还明白计划经济的重要性,也都反复强调过计划经济(宏 观调控)的不可或缺。可是,出于种种维护改革开放大局的考虑,这方面总是语焉不详,以至于普通人中一提到计划经济,第一个 反应就是联想到上面说的效率低下、无能、大锅饭、官僚体制等等。虽然课本上总在强调要两手抓,要搞好计划,然而事实上,我 们就从来没有同时两手都硬过。毛时代当然提计划了,而现在,毫无疑问,各种真假市场经济思想是大行其道,傲然占据各种中国 各种经济理论的核心位置不可动摇。   呜呼!计划经济何其冤枉!难道计划经济真的是十恶不赦的恶魔吗?   我这篇文章就是来替计划经济正名的。   首先就要指出,我们谈论的过去中国的计划经济其实根本就是误指!中国过去的经济体制不应该叫做计划经济,而是命令经济!为 何要让计划经济背黑锅?   我们必须首先分清楚这个概念。何谓命令经济?这是农业时代的产物,它不考虑投入产出系数,没有数理逻辑上的计划均衡概念, 不考虑经济过程的最优化原则,而仅以人们对共同体的依附性为基础,以长官意志、浪漫心理、个人需要或社会上的某种道德激情 来支配经济(见金雁,秦晖著的《十年沧桑,东欧诸国的经济社会转轨与思想变迁》)。这种经济模式在中国从古以来就一直很发 达。   一般地说,如果把市场机制下通过供求与价格信息反馈调整经济决策的西方经济看作“即时纠错”的经济模式,那么命令经济显然 是一种无法纠错的经济,除非长官意志发生转移。毫无疑问,改革开放前的中国,长期处于这样一种命令经济的模式下。   而另一种体制则是建立在工业文明、理性主义、科学主义基础上的现代计划经济。它认为,市场经济的最大问题在于市场的无go- vern-ment

【转】Linux PROC文件系统详细介绍

什么是proc文件系统?   proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。它的目录结构如下:   目录名称 目录内容 apm 高级电源管理信息 cmdline 内核命令行 Cpuinfo 关于Cpu信息 Devices 可以用到的设备(块设备/字符设备) Dma 使用的DMA通道 Filesystems 支持的文件系统 Interrupts 中断的使用 Ioports I/O端口的使用 Kcore 内核核心印象 Kmsg 内核消息 Ksyms 内核符号表 Loadavg 负载均衡 Locks 内核锁 Meminfo 内存信息 Misc 杂项 Modules 加载模块列表 Mounts 加载的文件系统 Partitions 系统识别的分区表 Rtc 实时时钟 Slabinfo Slab池信息 Stat 全面统计状态表 Swaps 对换空间的利用情况 Version 内核版本 Uptime 系统正常运行时间   并不是所有这些目录在你的系统中都有,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:net,scsi和sys。 Sys目录是可写的,可以通过它来访问或修改内核的参数(见下一部分),而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi 目录不存在。   除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。Proc文件系统的名字就是由之而起。进程目录的结构如下:   目录名称 目录内容 Cmdline 命令行参数 Environ 环境变量值 Fd 一个包含所有文件描述符的目录 Mem 进程的内存被利用情况 Stat 进程状态 Status 进程当前状态,以可读的方式显示出来 C

【转】cramfs文件系统中ARM9上的移植

在复习软考之前我一直在做文件系统的移植,包括cramfs,jffs2,yaffs2,由于前面三天用来复习了,所以现在才重新开始做,但是今晚把之前做过的一些东西做一些总结吧,希望对各位后来者有所帮助,也方便以后自己查阅。(yaffs2只是做了一个晚上,至今还不能启动,cramfs和jffs2可以启动了) 现在先给出网上一些热心网友贴出了一个linux2.6内核的移植过程(我也是参照这个步骤做的) linux-2.6内核已经支持S3C2410处理器的多种硬件板,我们可以参考SMDK2410参考板来移植开发板的内核。 实验 步骤: (1)准备工作 (2)修改顶层Makefile (3)添加分区 (4)添加devfs (5)配置编译内核 一、准备工作 建立工作目录 ,下载源码,安装交叉工具链,步骤如下。 mkdir / root /build_kernel cd /root/build_kernel wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux2.6.14.1.tar.bz2 tar jxvf linux2.6.14.1.tar.bz2 或者到上面的网址去下载 二、 修改 顶层 Makefile 修改内核目录树根下的的Makefile ,指明体系结构是arm,交叉编译工具是arm-linux-。 vi Makefile 找到ARCH和CROSS_COMPILE,修改 ARCH ?= arm CROSS_COMPILE ?= /usr/local/arm/3.4.4/bin/ arm-linux- 保存退出 。 这里使用的交叉工具链是3.4.4版本的交叉工具链,需要自己安装,交叉工具链要用好几个,用别人做好的就可以了,当然自己做也可以,但是比较麻烦。 三、 设置flash分区 此处一共要修改 2 个文件,分别是: arch/arm/mach - s3c2410/devs.c        ;指明分区信息 arch/arm/mach - s3c2410/mach-smdk2410.c   ;指定启动时初始化 3.1指明分区信息 在arch/arm/mach-s3c2410/devs.c文件中: vi arch/arm/mach-