毕业实习报告姓名:专业:班级学号:指导教师:实习地点:2系部:专业:班级学号:姓名实习类别集中实习实习单位实习指导教师实习内容嵌入式Linux系统工程师实习小结通过一个月的实习生活以来。我学会了很多,也懂得了很多在课堂中没有发现的知识和道理。让我真正感受到了理论与实践之间的距离,体会到了理论联系实际的真谛。实习中所见所闻让我倍感自己的知识面很窄很有限,需要更多的实践锻炼。通过实习,培养了我观察问题和解决实际问题的能力;培养了团队合作精神。俗话说:“隔行如隔山”。我的专业是测控技术与仪器,以前没有接触有软件的专业,说实话心里没底。当时是抱着好奇的心参加集中实习,想了解软件是怎样开发出来的。刚来实习时,有点不适应,不知从何处下手。在这一个月的时间里,我勤勤恳恳,扎扎实实,脚踏实地地做好一个实习生的本职工作,认真完成每次任务,虚心向其他员工学习,并注意不断自学软件开发的书籍,以充实自己。实习单位评语单位公章(签字):系部指导教师评语指导教师签名:成绩汇总实习成绩(实习单位)平时考核成绩报告成绩总评注:系部指导教师评语应根据平时考核情况、实习报告及实习单位的评语与成绩综合撰写。3目录1前言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„71.1实习单位简介„„„„„„„„„„„„„„„„„„„„„„„„„„„71.2实习目的„„„„„„„„„„„„„„„„„„„„„„„„„„„„„72实习内容„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„82.1文件操作„„„„„„„„„„„„„„„„„„„„„„„„„„„„„82.1.1UNIX哲学之一:一切皆为文件„„„„„„„„„„„„„„„„82.1.2关于文件描述符„„„„„„„„„„„„„„„„„„„„„„„82.1.3不带缓冲的文件I/O„„„„„„„„„„„„„„„„„„„„„82.1.4关于出错处理„„„„„„„„„„„„„„„„„„„„„„„„82.1.5不带缓冲的文件操作函数„„„„„„„„„„„„„„„„„„„82.1.6参数的含义„„„„„„„„„„„„„„„„„„„„„„„„„92.1.7可选„„„„„„„„„„„„„„„„„„„„„„„„„„„„92.1.8第三个参数„„„„„„„„„„„„„„„„„„„„„„„„„92.1.9close„„„„„„„„„„„„„„„„„„„„„„„„„„„„92.1.10read„„„„„„„„„„„„„„„„„„„„„„„„„„„„92.1.11write„„„„„„„„„„„„„„„„„„„„„„„„„„„92.1.12lseek„„„„„„„„„„„„„„„„„„„„„„„„„„„102.1.13标准I/O操作„„„„„„„„„„„„„„„„„„„„„„„102.1.14fopen函数„„„„„„„„„„„„„„„„„„„„„„„„„102.1.15fopen„„„„„„„„„„„„„„„„„„„„„„„„„„„102.1.16fclose„„„„„„„„„„„„„„„„„„„„„„„„„„„112.1.17fread/fwrite„„„„„„„„„„„„„„„„„„„„„„„„112.1.18fseek„„„„„„„„„„„„„„„„„„„„„„„„„„„112.1.19fgets„„„„„„„„„„„„„„„„„„„„„„„„„„„112.1.20标准I/O的三种缓冲„„„„„„„„„„„„„„„„„„„„122.2Linux入门知识„„„„„„„„„„„„„„„„„„„„„„„„„„1242.2.1Linux诞生„„„„„„„„„„„„„„„„„„„„„„„„„122.2.2GNU简介„„„„„„„„„„„„„„„„„„„„„„„„„122.2.3什么是自由软件„„„„„„„„„„„„„„„„„„„„„„„122.2.4目前linux的常见发行版本„„„„„„„„„„„„„„„„„„132.2.5Linux操作系统的架构„„„„„„„„„„„„„„„„„„„„132.2.6Linux下的常用命令„„„„„„„„„„„„„„„„„„„„„132.2.7Linux的文件命名规则„„„„„„„„„„„„„„„„„„„„142.2.8文件权限„„„„„„„„„„„„„„„„„„„„„„„„„„142.2.9Linux下开发工具——vi„„„„„„„„„„„„„„„„„„„„142.2.10Vi的安装使用„„„„„„„„„„„„„„„„„„„„„„„142.2.11Linux编译器gcc及其使用„„„„„„„„„„„„„„„„„„152.2.12Makefile„„„„„„„„„„„„„„„„„„„„„„„„„„152.2.13Make的工作过程„„„„„„„„„„„„„„„„„„„„„„162.2.14Makefile的优点„„„„„„„„„„„„„„„„„„„„„„„162.3单向链表的实现„„„„„„„„„„„„„„„„„„„„„„„„„„162.3.1malloc和free„„„„„„„„„„„„„„„„„„„„„„„„162.3.2链表在物理内存上的存储„„„„„„„„„„„„„„„„„„„162.3.3链表的特点„„„„„„„„„„„„„„„„„„„„„„„„„172.3.4链表节点的基本格式„„„„„„„„„„„„„„„„„„„„„172.3.5链表的插入„„„„„„„„„„„„„„„„„„„„„„„„„172.4多进程编程„„„„„„„„„„„„„„„„„„„„„„„„„„„„172.4.1进程与程序„„„„„„„„„„„„„„„„„„„„„„„„„172.4.2进程的三种状态„„„„„„„„„„„„„„„„„„„„„„„182.4.3项目中使用多进程的原因„„„„„„„„„„„„„„„„„„„182.4.4进程控制„„„„„„„„„„„„„„„„„„„„„„„„„„182.4.5fork用法„„„„„„„„„„„„„„„„„„„„„„„„„„182.4.6fork发生了什么„„„„„„„„„„„„„„„„„„„„„„„1852.4.7fork.c„„„„„„„„„„„„„„„„„„„„„„„„„„„„182.4.8代码分析„„„„„„„„„„„„„„„„„„„„„„„„„„192.4.9终止进程„„„„„„„„„„„„„„„„„„„„„„„„„„202.4.10正常终止„„„„„„„„„„„„„„„„„„„„„„„„„„202.4.11异常终止„„„„„„„„„„„„„„„„„„„„„„„„„„202.5聊天室项目简介„„„„„„„„„„„„„„„„„„„„„„„„„„202.5.1项目说明„„„„„„„„„„„„„„„„„„„„„„„„„„202.5.2项目总体讲解„„„„„„„„„„„„„„„„„„„„„„„„212.5.3根据架构划分„„„„„„„„„„„„„„„„„„„„„„„„212.5.4用户录入„„„„„„„„„„„„„„„„„„„„„„„„„„222.5.5信息打包„„„„„„„„„„„„„„„„„„„„„„„„„„222.5.6信息发送、接收„„„„„„„„„„„„„„„„„„„„„„„222.5.7信息显示„„„„„„„„„„„„„„„„„„„„„„„„„„222.5.8保存消息„„„„„„„„„„„„„„„„„„„„„„„„„„222.5.9传递消息„„„„„„„„„„„„„„„„„„„„„„„„„„232.5.10服务器解析消息„„„„„„„„„„„„„„„„„„„„„„„232.5.11实习目标„„„„„„„„„„„„„„„„„„„„„„„„„„232.6网络编程„„„„„„„„„„„„„„„„„„„„„„„„„„„„„232.6.1字节序„„„„„„„„„„„„„„„„„„„„„„„„„„„232.6.2网络字节序„„„„„„„„„„„„„„„„„„„„„„„„„232.6.3网络字节序和主机字节序转换„„„„„„„„„„„„„„„„„232.6.4基于数据流的socket编程流程„„„„„„„„„„„„„„„„„232.6.5socket„„„„„„„„„„„„„„„„„„„„„„„„„„„„242.6.6bind„„„„„„„„„„„„„„„„„„„„„„„„„„„„„242.6.7sockaddr初始化„„„„„„„„„„„„„„„„„„„„„„„242.6.8listen„„„„„„„„„„„„„„„„„„„„„„„„„„„„252.6.9select„„„„„„„„„„„„„„„„„.„„„„„„„„„„„2562.6.10Select的操作„„„„„„„„„„„„„„„„„„„„„„„„252.6.11返回值„„„„„„„„„„„„„„„„„„„„„„„„„„„252.6.12accept„„„„„„„„„„„„„„„„„„„„„„„„„„„252.6.13客户端程序„„„„„„„„„„„„„„„„„„„„„„„„„263实习总结„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„273.1实习中遇到的问题„„„„„„„„„„„„„„„„„„„„„„„„„273.2实习收获„„„„„„„„„„„„„„„„„„„„„„„„„„„„„273.3实习建议„„„„„„„„„„„„„„„„„„„„„„„„„„„„„283.4实习总结„„„„„„„„„„„„„„„„„„„„„„„„„„„„„281前言71.1实习单位简介北京亚嵌()教育研究中心是国内最早从事嵌入式技术教育和培训的专业研究机构。亚嵌()发源于1998年在清华大学成立的AKA组织,秉承AKA“自由、协作、创造”的技术理念,始终致力于嵌入式技术的人才培养、项目研发、技术推广和咨询服务工作。中心具有博士以上学历12人,硕士学历近20人,同时汇聚了30多名来自于清华、北大、中科院等科研院校的一线研发主力作为专家师资团队,聘请了龙芯、红旗、中兴、华为、大唐电信、IBM、AMD等各大公司的技术负责人和项目经理作为中心的技术顾问。1.2实习目的(1)通过实习使学生对所要设计的课题有一个初步的了解,获得基本的感性认识,加深对课题的认识,学会理论联系实际,扩大知识面,引发设计思路,对设计任务有更明确更深刻的理解;(2)通过撰写实习报告和课题讨论,使学生学会综合应用所学知识,提高应用专业知识的能力,并为后续的毕业论文和毕业设计做好铺垫和准备;(3)通过实习能够开阔学生的视野,培养学生分析问题、解决问题的能力,进一步了解专业发展现状和前景,为以后的工作方向有更好的定位。82实习内容2.1文件操作2.1.1UNIX哲学之一:一切皆为文件Linux文件种类:1.普通文件2.目录文件3.链接文件4.设备文件2.1.2关于文件描述符文件描述符是一个非负整数,是一个索引值0STDIN_FILENO1STDOUT_FILENO2STDERR_FILENO包含在unistd.h文件描述符的范围是0~OPEN_MAXLinux下OPEN_MAX为10485762.1.3不带缓冲的文件I/O操作这次项目中将要用到的文件操作openclosereadwritelseek注:这些函数是ANSIC的组成部分,但是是POSIX的组成部分2.1.4关于出错处理由于对文件的操作由于某种原因,比如文件打开失败、文件读、写失败,这些出错会导致程序执行失败解决办法:加上出错处理,可以在出错时很明了的发现错误出在哪里常用函数:#includeerrno.h#includestdio.hvoidperror(constchar*s);2.1.5不带缓冲的文件操作函数open9#includesys/types.h#includesys/stat.h#includefcntl.hIntopen(constchar*pathname,intflags);Intopen(constchar*pathname,intflags,mode_tmode);返