嵌入式Linux驱动模板精讲与项目实践 练习题及解答

合集下载

嵌入式Linux系统基础试题库(含答案).docx

嵌入式Linux系统基础试题库(含答案).docx

嵌入式Linux系统基础试题库一.不定项选择题:1.对于如下的定义,说法正确的有(A )int * pb, pc;A、pb是一个指向整数的指针,pc是一个整数B、p b和pc都是指向整数的指针C、这个定义是错的D、这个定义是对的,但在编译时会出现告警2.以下描述正确的有(D )A、sizeof(long)等于4.B、s hort类型的指针0p++表示指向下一个字节。

C、int a=OxffffOOOO,a 的值为-65535・D、u nsigned char类型的取值范围是0~256・3.以下代码正确的是(C )A、chara[]={“ABC〃};B、c hara^k";c、char a[4]={0};d、c har a[ll]=,?Hello word!,/;4.下面的网络协议中,面向连接的的协议是:A oA、传输控制协议B、用户数据报协议C、网际协议D、网际控制报文协议5.Linux文件权限一共10位长度,分成四段,第三段表示的内容是A、文件类型B、文件所有者的权限C、文件所有者所在组的权限D、其他用户的权限6.终止一个前台进程可能用到的命令和操作B_oA、killB、<CTRL>+CC、shut downD、halt7.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父冃录的选项是_D oA、-mB、-dC、-fD、-p8.下面关于i节点描述错误的是 gA、i节点和文件是一一对应的(每个文件都有唯一一个索引结点号与之对应,而对于一个索引结点号,却可以有多个文件名与之对应)B、i节点能描述文件占用的块数C、i节点描述了文件大小和指向数据块的指针D、通过i节点实现文件的逻辑结构和物理结构的转换9.一个文件名字为rr.乙可以用来解压缩的命令是:D。

A、tarB、gzipC、compressD、uncompress10.一台主机要实现通过局域网与另一个局域网通信,需要做的工作是C OA、配置域名服务器B、定义一条本机指向所在网络的路由C、定义一条本机指向所在网络网关的路由D、定义一条本机指向冃标网络网关的路由11.局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.Io 主机192.168.1.20 访问172.16.1.0/24 网络时,其路由设置正确的是B oA、route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1B、route add -net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0metric 1C、route add -net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0metric 1D、r oute add default 192.168.1.0 netmask 172.168.1.1 metric 112.下列提法中,不属于ifconfig命令作用范围的是D_oA、配置本地回环地址B、配置网卡的IP地址C、激活网络适配器D、加载网卡到内核中13.在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是CoA、主机IP设置有误B、没有设置连接局域网的网关C、局域网的网关或主机的网关设置有误D、局域网DNS服务器设置有误14.不需更编译内核的情况是D。

嵌入式Linux系统开发与应用考试

嵌入式Linux系统开发与应用考试

嵌入式Linux系统开发与应用考试(答案见尾页)一、选择题1. 嵌入式Linux系统开发环境搭建A. 安装Linux操作系统B. 配置开发环境C. 编写、编译、调试程序D. 连接目标板2. 嵌入式Linux系统编程基础A. C语言基础B. 汇编语言基础C. 嵌入式系统编程规范D. 嵌入式系统函数库3. 嵌入式Linux应用程序开发A. 嵌入式Linux应用程序设计原则B. 嵌入式Linux应用程序开发流程C. 嵌入式Linux应用程序调试技巧D. 嵌入式Linux应用程序性能优化4. 嵌入式Linux系统内核设计与实现A. 内核硬件抽象层(HAL)B. 微内核架构C. 嵌入式系统驱动程序开发D. 嵌入式系统实时性研究5. 嵌入式Linux系统文件系统与存储管理A. 文件系统基本概念B. 嵌入式Linux文件系统实现C. 存储管理技术D. 嵌入式系统数据安全6. 嵌入式Linux网络通信技术A. 网络通信协议分析B. 嵌入式Linux网络驱动程序开发C. 嵌入式Linux套接字编程D. 网络安全研究7. 嵌入式Linux系统跨平台开发技术A. 嵌入式Linux系统与Windows平台的互操作性技术B. 嵌入式Linux系统与macOS平台的互操作性技术C. 嵌入式Linux系统与Linux其他发行版的互操作性技术D. 嵌入式Linux系统全球化与本地化技术8. 嵌入式Linux系统项目实战A. 嵌入式Linux系统产品策划与设计B. 嵌入式Linux系统软件开发与测试C. 嵌入式Linux系统项目实施与运维D. 嵌入式Linux系统项目总结与反思9. 嵌入式Linux系统开发与应用相关技术标准与规范A. 嵌入式Linux系统开发规范B. 嵌入式Linux系统测试标准C. 嵌入式Linux系统文档编写规范D. 嵌入式Linux系统知识产权保护规范10. 嵌入式Linux系统开发环境搭建A. 安装Linux操作系统B. 配置开发环境C. 编写、编译和调试C/C++程序D. 使用集成开发环境(IDE)11. 嵌入式Linux系统编程基础A. 数据类型与运算符B. 控制结构与函数C. 指针与内存管理D. 文件操作与进程管理12. 嵌入式Linux应用程序开发A. 创建和控制线程B. 实现多任务处理C. 数据结构与算法D. 设计用户界面13. 嵌入式Linux系统启动与引导A. 启动过程B. 加载内核与根文件系统C. 系统初始化与配置D. 启动设备驱动程序14. 嵌入式Linux系统调试与诊断A. 使用调试工具B. 分析系统性能C. 调试程序错误D. 系统故障排除15. 嵌入式Linux网络编程A. 网络协议与数据结构B. 建立网络连接C. 数据传输与通信D. 网络安全与防火墙设置16. 嵌入式Linux系统资源管理A. 内存管理B. 文件系统C. 设备分配与管理D. 系统性能监控17. 嵌入式Linux项目实战A. 嵌入式Linux产品设计与实现B. 嵌入式Linux项目开发流程与方法C. 嵌入式Linux项目测试与评估D. 嵌入式Linux项目经验分享与交流18. 嵌入式Linux系统未来发展趋势A. 人工智能与物联网应用B. 5G与低功耗技术发展C. 自动驾驶与智能交通系统D. 绿色环保与可持续发展19. 嵌入式Linux系统开发环境搭建A. 安装Linux操作系统B. 配置开发环境C. 编写、编译、调试程序D. 连接目标板20. 嵌入式Linux系统编程基础A. C语言基础B. 汇编语言基础C. 嵌入式系统编程概念D. 嵌入式系统编程实例21. 嵌入式Linux系统驱动程序开发A. 驱动程序基本概念B. 驱动程序开发流程C. 驱动程序编写实例D. 驱动程序调试与测试22. 嵌入式Linux系统应用程序开发A. 嵌入式Linux应用程序设计原则B. 嵌入式Linux应用程序开发流程C. 嵌入式Linux应用程序实例D. 嵌入式Linux应用程序优化23. 嵌入式Linux系统文件系统与内存管理A. 嵌入式Linux文件系统基本概念B. 嵌入式Linux内存管理机制C. 嵌入式Linux文件系统实现D. 嵌入式Linux内存管理优化24. 嵌入式Linux系统网络编程A. 嵌入式Linux网络编程基础B. 嵌入式Linux套接字编程C. 嵌入式Linux网络应用开发D. 嵌入式Linux网络协议栈实现25. 嵌入式Linux系统设备驱动程序开发A. 设备驱动程序基本概念B. 嵌入式Linux设备驱动程序开发流程C. 嵌入式Linux设备驱动程序编写实例D. 嵌入式Linux设备驱动程序调试与测试26. 嵌入式Linux系统内核裁减与移植A. 嵌入式Linux内核裁减原理B. 嵌入式Linux内核移植方法C. 嵌入式Linux内核配置D. 嵌入式Linux内核集成27. 嵌入式Linux系统项目实战A. 嵌入式Linux系统开发项目需求分析B. 嵌入式Linux系统开发团队组建与分工C. 嵌入式Linux系统开发进度管理与质量控制D. 嵌入式Linux系统开发成果展示与评估28. 嵌入式Linux系统交叉平台开发环境建立A. 搭建交叉开发环境所需硬件设备B. 安装交叉开发工具软件C. 编写交叉平台软件开发框架D. 调试和优化交叉平台程序29. 嵌入式Linux系统应用程序开发技术A. 嵌入式Linux系统编程基础B. 嵌入式Linux系统进程与线程管理C. 嵌入式Linux系统内存管理D. 嵌入式Linux系统文件系统30. 嵌入式Linux系统网络编程A. 嵌入式Linux系统网络通信协议B. 嵌入式Linux系统套接字编程C. 嵌入式Linux系统网络驱动程序开发D. 嵌入式Linux系统网络安全31. 嵌入式Linux系统实时性技术A. 嵌入式Linux系统实时性概念及重要性B. 嵌入式Linux系统实时调度算法C. 嵌入式Linux系统实时任务设计D. 嵌入式Linux系统实时性能优化32. 嵌入式Linux系统低功耗技术A. 嵌入式Linux系统功耗概念及评估方法B. 嵌入式Linux系统低功耗硬件设计C. 嵌入式Linux系统低功耗软件优化D. 嵌入式Linux系统低功耗系统级设计33. 嵌入式Linux系统文件系统优化A. 嵌入式Linux系统文件系统概述B. 嵌入式Linux系统文件系统性能优化C. 嵌入式Linux系统文件系统安全性优化D. 嵌入式Linux系统文件系统可扩展性优化34. 嵌入式Linux系统内核定制与裁减A. 嵌入式Linux系统内核功能分析B. 嵌入式Linux系统内核配置与编译C. 嵌入式Linux系统内核裁减与移植D. 嵌入式Linux系统内核优化与升级35. 嵌入式Linux系统驱动程序开发A. 嵌入式Linux系统驱动程序基本概念B. 嵌入式Linux系统驱动程序开发流程C. 嵌入式Linux系统驱动程序编写规范D. 嵌入式Linux系统驱动程序测试与调试36. 嵌入式Linux系统项目实战案例分析A. 嵌入式Linux系统智能家居项目实战B. 嵌入式Linux系统物联网项目实战C. 嵌入式Linux系统汽车电子项目实战D. 嵌入式Linux系统航空航天项目实战37. 嵌入式Linux系统交叉开发技术A. 嵌入式Java技术B. 嵌入式Python技术C. 嵌入式C/C++技术D. 嵌入式汇编语言技术38. 嵌入式Linux系统驱动程序开发A. 驱动程序基本概念及分类B. 嵌入式Linux系统设备驱动程序开发流程C. 嵌入式Linux系统中断服务程序开发D. 嵌入式Linux系统硬件设备驱动程序调试与测试39. 嵌入式Linux系统文件系统开发A. 文件系统基本概念及分类B. 嵌入式Linux系统常用文件系统解析C. 嵌入式Linux系统文件系统优化与管理D. 嵌入式Linux系统用户认证与权限管理40. 嵌入式Linux系统进程与线程管理A. 进程与线程基本概念及区别B. 嵌入式Linux系统进程调度与进程通信C. 嵌入式Linux系统线程同步与互斥D. 嵌入式Linux系统实时性与并发性处理41. 嵌入式Linux系统网络编程A. 网络编程基础概念及协议分析B. 嵌入式Linux系统套接字编程C. 嵌入式Linux系统TCP/IP协议栈实现D. 嵌入式Linux系统网络设备驱动程序开发42. 嵌入式Linux系统图形用户界面(GUI)开发A. 嵌入式Linux系统GUI组件开发B. 嵌入式Linux系统事件处理与消息循环C. 嵌入式Linux系统多线程与同步D. 嵌入式Linux系统GUI性能优化43. 嵌入式Linux系统安全性设计A. 嵌入式Linux系统安全性概述B. 嵌入式Linux系统权限管理与访问控制C. 嵌入式Linux系统安全审计与监控D. 嵌入式Linux系统加密与解密技术44. 嵌入式Linux系统项目实战A. 嵌入式Linux系统智能家居控制系统设计B. 嵌入式Linux系统车载电子系统设计C. 嵌入式Linux系统工业自动化控制系统设计D. 嵌入式Linux系统医疗设备远程监控系统设计45. 嵌入式Linux系统未来发展趋势与挑战A. 嵌入式Linux系统与云计算、物联网融合B. 嵌入式Linux系统人工智能、机器学习应用C. 嵌入式Linux系统边缘计算技术发展D. 嵌入式Linux系统绿色环保与节能技术二、问答题1. 什么是嵌入式Linux系统?它的主要特点是什么?2. 嵌入式Linux系统开发流程通常包括哪些步骤?3. 嵌入式Linux系统中常用的开发工具有哪些?4. 嵌入式Linux系统中如何进行性能优化?5. 嵌入式Linux系统中如何进行故障排查与调试?6. 嵌入式Linux系统中如何保护知识产权?7. 嵌入式Linux系统中如何进行跨平台开发?8. 嵌入式Linux系统中如何进行可持续性与环保设计?参考答案选择题:1. ABCD2. ABCD3. ABCD4. ABCD5. ABCD6. ABCD7. ABCD8. ABCD9. ABCD10. ABCD11. ABCD 12. ABCD 13. ABCD 14. ABCD 15. ABCD 16. ABCD 17. ABCD 18. ABCD 19. ABCD 20. ABCD21. ABCD 22. ABCD 23. ABCD 24. ABCD 25. ABCD 26. ABCD 27. ABCD 28. ABCD 29. ABCD 30. ABCD31. ABCD 32. ABCD 33. ABCD 34. ABCD 35. ABCD 36. ABCD 37. ABCD 38. ABCD 39. ABCD 40. ABCD41. ABCD 42. ABCD 43. ABCD 44. ABCD 45. ABCD问答题:1. 什么是嵌入式Linux系统?它的主要特点是什么?嵌入式Linux系统是一种特殊的Linux操作系统,主要用于嵌入到各种硬件设备中。

嵌入式Linux试题

嵌入式Linux试题

嵌入式Linux系统基础试题库一.填空题:1. 在Linux系统中,以文件方式访问设备。

2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统。

3. Linux文件系统中每个文件用索引节点来标识。

7. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为:644 ,该文件属性是目录。

8. 前台起动的进程使用Ctrl+c终止。

13. 编写的Shell程序运行前必须赋予该脚本文件执行权限。

16. linux内核分为进程调度、内存管理、虚拟文件系统和网络接口、进程间通信这5个子系统。

19. 唯一标识每一个用户的是用户ID 和用户名。

21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统。

27. vi编辑器具有三种工作模式:命令模式、输入模式和末行模式。

28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示文件类型,第二段占3位,表示文件所有者对该文件的权限。

29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为:运行态、就绪态和等待态(阻塞态)。

38 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是/etc 。

40. 套接字文件的属性位是s ,管道文件的属性位是p。

41. 结束后台进程的命令是kill。

43. Links分为硬链接和符号链接。

44. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是ps -aux 。

46. 将前一个命令的标准输出作为后一个命令的标准输入,称之为管道。

47. 为脚本程序指定执行权的命令及参数是chmod a+x filename 。

52.在Linux系统中,压缩文件后生成后缀为.gz文件的命令是gzip 。

53. 在用vi编辑文件时,将文件内容存入test.txt文件中,应在末行模式下键入:w test.txt。

嵌入式LINUX试题

嵌入式LINUX试题

一、单项选择题1.在宿主机上开启tftp服务时,所要修改的配置文件为()A./etc/exportsB./etc/xinetd.dC.以上都不对D./etc/xinetd.d/tftp答案:D2.内核在配置结束后,会将用户的选择结果保存在文件()中A.defconfigB.configC.defaultD..config答案:D3.u-boot指令中,下载文件的命令是()A.setenvB.resetC.tftpD.ping答案:C4.Kconfig文件中生成新的配置菜单使用()A.menuB.helpC.defaultD.config答案:A5.在内核解压缩目录的Makefile文件中修改的ARCH变量实际是在指定()A.优化参数B.目标系统架构C.交叉编译器D.编译参数答案:B6.在构建嵌入式linux平台过程中,具备开发能力的计算机我们称之为()A.计算机B.宿主机C.服务器D.目标系统答案:B7.内核在编译时所依赖的编译规则文件是()A..configB.MakefileC.MakeD.File答案:B8.linux下所使用的串口调试工具是()B.nfsC.minicomD.tftp答案:C9.内核配置菜单生成时所依赖的文件是()A.configB.KconfigC.MakefileD.kconfig答案:B10.U-Boot下tftp下载文件到目标系统的内存当中,在内存当中默认的地址是()A.0x30000000B.0x30008000C.0x30000100D.0x30080000答案:B11.在操作过程中,内核编译所生成的内核压缩可执行文件是()A.s3c2440B.linux-2.6.32.2C.zImageD.选项均不真确答案:C12.系统环境变量中用来作为可执行文件搜索路径的变量是();A.PWDB.HISTORY_SIZEC.LD_LIBRARY_PATHD.PATH答案:D13.创建设备文件有手动创建与自动创建之分,那么手动创建时标示设备所属种类时是用()来区分的。

嵌入式linux-测试题(2套)

嵌入式linux-测试题(2套)

一:选择题1.下面不是对Linux操作系统特点描述的是( B )。

[A] 良好的可移植性[B] 单用户[C] 多用户[D] 多任务2.查看创建目录命令mkdir的帮助文档,可以使用命令( D)。

[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir3.在C语言中,要求运算数必须是整型的运算符是( D )。

[A] / [B] ++ [C] != [D] %4.C语言程序的三种基本程序是( A )。

[A] 顺序结构,选择结构,循环结构[B] 递归结构,循环结构,转移结构[C] 嵌套结构,递归结构,顺序结构[D] 循环结构,转移结构,顺序结构5.数据结构包含的内容不包括(a)A.线性结构B.存储结构C.逻辑结构D.数据运算6.向一个单链表linklist中的节点t后面插入一个节点p,下列操作正确的是(a)A.p->next = t->next;t->next = p;B.t->next = p->next;t->next = p;C.t->next = p;p->next = t->next;D.t->next = p;t->next = p->next;7.下列哪种打开文件的方式不能修改文件已有的内容( B )[A] r+ [B] r [C] w+ [D] a+8.以下哪种不是进程的状态( B )[A] 运行态[B] 锁定态[C] 睡眠态[D] 停止态9.常用来进行多任务同步的机制是( B )[A]管道[B] 信号量[C] 信号[D] 共享内存10.下列对于有名管道描述错误的是( D )[A] 可以用于互不相关的进程间[B] 通过路径名来打开有名管道[C] 在文件系统中可见[D] 管道内容保存在磁盘上11.不能被用户进程屏蔽的信号是( B )[A] SIGINT [B] SIGSTOP [C] SIGQUIT [D] SIGILL12.fread()返回值的含义是( B )[A] 读取的字节数[B] 读取的对象数[C] 缓冲区的首地址[D] 013.以下不属于socket的类型的是 ( )。

嵌入式系统linux模拟参考题一

嵌入式系统linux模拟参考题一

嵌入式系统linux模拟参考题一、选择题1、如下哪一个命令可以帮助你知道shell命令的用法:A manB pwdC helpD more答案:A2、Linux分区类型默认的是:A. vfatB. ext2/ext3C. swapD. dos答案:B3. 以下哪种循环shell不能处理:A ForB loopC whileD until答案: B4、下面哪条命令可用来确保文件“myfile〞存在:A. cp myfile /dev/nullB. touch myfileC. create myfileD. mkfile myfile答案: B5、 LILO的配置文件是:A. /etc/confB. /etc/lilo.confC. /proc/kcoreD. /usr/local/答案: B6、删除文件命令为:A. mkdirB. rmdirC. mvD. rm 答案: D7、用“useradd jerry〞命令添加一个用户,这个用户的主目录是什么:A./home/jerryB./bin/jerryC./var/jerryD./etc/jerry答案: A8、不是shell具有的功能和特点的是:A 管道B 输入输出重定向C 执行后台进程D 处理程序命令答案: A9、在以下ARM处理器的各种形式中,只有_____形式不可以可以自由地改变处理器的工作形式。

A、用户形式〔User〕B、系统形式(System)C、终止形式(Abort)D、中断形式(IRQ)答案:A10、如何从当前系统中卸载一个已装载的文件系统:A. umountB. dismountC. mount –uD. 从 /etc/fstab 中删除这个文件系统项答案: A11、〔〕命令可更改一个文件的权限设置?A. attribB. chmodC. changeD. file答案: B12、用命令ls -al显示出文件ff的描绘如下所示,由此可知文件ff的类型为:-rwxr-xr-- 1 root root 599 Cec 10 17:12 ffA. 普通文件B. 硬链接C. 目录D. 符号链接硬链接是一个指针,假设是硬链接那么会显示大于2的数答案: A13、字符设备文件类型的标志是:A. pB. cC. sD. l答案: B14、系统中有用户user1和user2,同属于users组。

《嵌入式Linu 操作系统》练习题 精编

《嵌入式Linu 操作系统》练习题 精编

1.Linux与嵌入式开发复习材料万睦莹和书架1.固态存储设备的典型空间分配结构图:由_________、_________、_________和_________组成。

2.在shell编程时,使用方括号表示测试条件的规则是:方括号两边必须有_________。

3.字符设备文件类型的标志是_______。

4.利用gdb进行调试时,可通过_________或 ________ 命令进行单步执行。

5.gcc的编译可分为___________、__________、____________和________________等四个阶段。

6.进程可以划分为三种状态___________、 ____________、 ____________,并随一定条件而相互转化。

如果需要__________,就会进入____________,如果不涉及到I/O操作,那么它就不停地在_________ 和 _____________ 这两个状态之间来回切换。

7.Bootloader的操作模式有: ___________、 ________________。

二者的区别?8.交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。

进行交叉编译的主机称为 __________,也就是普通的通用计算机;程序实际的运行环境称为__________,也就是嵌入式系统环境。

9.__________就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序。

10.Linux系统主要包含__________、_________和____________三种类型的进程。

11.在用vi编辑好文件后,为了将文件内容存入test.txt文件中并退出vi(开始进入vi时并未输入文件名),应在末行模式下键入 _____________;如果开始进入vi时并输入了文件名,应在末行模式下键入____________保存退出。

12.Linux进程控制API函数中,函数______用于创建一个新的进程。

(完整版)嵌入式Linux笔试题库和答案(新)

(完整版)嵌入式Linux笔试题库和答案(新)

嵌入式Linux笔试题库一.选择题1.Linux的创始人是谁()A、TurbolinuxB、A T&T Bell LaboratryC、University of HelsinkiD、Linus Torvalds2.在Linux中,命令解释器是哪个()A、管道B、分级文件系统C、字符型处理器D、shell3.Linux安装程序提供了两个引导装载程序( )A、GROUP和LLTOB、DIR和COIDC、GRUB和LILOD、以上都不是4.如果当前目录是/home/sea/china,那么“china”的父目录是哪个目录()A、/home/seaB、/home/C、/D、/sea5.在Linux中,要删除abc目录及其全部内容的命令为:()A、rm abcB、rm -r abcC、rmdir abcD、rmdir -r abc6.假定kernel支持vfat分区,下面哪一个操作是将/dev/hda1分区加载到/win目录?()A、mount -t windows /win /dev/hda1B、mount -fs=msdos /dev/hda1 /winC、mount -s win /dev/hda1 /winD、mount –t vfat /dev/hda1 /win7.显示用户的主目录的命令是什么()A、echo $HOMEB、echo $USERDIRC、echo $ECHOD、echo $ENV8.系统中有用户user1和user2,同属于users组。

在user1用户目录下有一文件file1,它拥有644的权限,如果user2用户想修改user1用户目录下的file1文件,应拥有( )权限。

A、744B、664C、646D、7469.如何查看一个RPM软件包是否安装( )A、rpm -Vc postfixB、rpm -q postfixC、rpm --changelog postfixD、rpm -q—changelog postfix10*.在Linux中,提供TCP/IP包过滤功能的软件叫什么( C )A、rarpB、routeC、iptablesD、filter11.nfs服务的配置文件是什么?()/etc/mtab B、/etc/fastboot C、/etc/fstab D、/etc/exports12.用命令ls -al显示出文件ff的描述:-rwxr-xr-- 1 root root 599 Cec 10 17:12 ff 由此可知文件ff的类型为:()A、普通文件B、硬连接C、目录D符号连接13.Linux操作系统中的shell是()A、命令解释器B、程序设计语言C、脚本编辑器D、编译器14.能实现文件系统远程挂载的是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录练习题及解答一、编程类:1. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

#define MIN(A,B) ((A) <= (B)?(A) : (B))这个测试是为下面的目的而设的:(1)标识#define在宏中应用的基本知识。

这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。

(2)三重条件操作符的知识。

这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码。

(3)懂得在宏中小心地把参数用括号括起来2.预处理器标识#error的目的是什么?#error是C/C++语言预处理命令之一,当预处理器预处理到#error命令时,将停止编译并输出用户自定义的错误消息。

其中如果是C语言编辑器则执行#error命令,如果是C++命令则跳过该命令。

用来主动的检测不合规范的情况并提示报错。

#error 停止编译并显示错误信息例如,使用C编译器:#ifndef __cplusplus#error#endif#include <stdio.h>int main(){printf("Hello,World!");return 0;}3.内核有很多do……while(0);有何作用?do……while(0)用于避免在C中宏定义被展开时导致出错的问题。

例如:#define exch(x,y) {int tmp; tmp=x; x=y; y=tmp;}if (x > y)Exch(x,y);elsedo_something();展开:if (x > y){int tmp; tmp=x; x=y; y=tmp;};//此处多了个分号,使用时会出错。

elsedo_something();#define exch(x,y) do {int tmp; tmp=x; x=y; y=tmp;}while(0)//最后没有分号所以宏定义中涉及到函数的处理,最好使用do…while(0)封装。

4.谈谈Volatile与Register修饰符的作用?volatile 是纯程序与在硬件上运行的程序的最大区别,在 linux 系统中编译时必须进行优化的,加上 volatile 关键词的变量是让编译器不对其优化。

register是建议编译器使用寄存器来优化对变量的存取。

5.关键字volatile有什么含意并给出三个不同的例子。

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。

精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。

下面是volatile变量的几个例子:(1)并行设备的硬件寄存器(如:状态寄存器)(2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)(3)多线程应用中被几个任务共享的变量回答不出这个问题的人是不会被雇佣的。

我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。

嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求volatile变量。

不懂得volatile内容将会带来灾难。

6. 一个参数既可以是const还可以是volatile吗?解释为什么。

答案:是的。

一个例子是只读的状态寄存器。

它是volatile因为它可能被意想不到地改变。

它是const因为程序不应该试图去修改它。

7. 一个指针可以是volatile吗可以,因为指针和普通变量一样,有时也有变化程序的不可控性。

常见例:子中断服务子程序修改一个指向一个buffer的指针时,必须用volatile来修饰这个指针。

说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。

其保存的数值是个整型数据,和整型变量不同的是,这个整型数据指向的是一段内存地址。

8. 下面的函数有什么错误:int square(volatile int *ptr){return *ptr * *ptr;}答案:这段代码的有个恶作剧。

这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:int square(volatile int *ptr){int a,b;a = *ptr;b = *ptr;return a * b;}由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。

结果,这段代码可能返不是你所期望的平方值!正确的代码如下:long square(volatile int *ptr){int a;a = *ptr;return a * a;}9. 关键字static的作用是什么?在C语言中,关键字static有三个明显的作用:(1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

(2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。

它是一个本地的全局变量。

(3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。

那就是,这个函数被限制在声明它的模块的本地范围内使用。

大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。

这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。

10. C语言的关键字static 和C++ 的关键字static 有什么区别?在C中static用来修饰局部静态变量和外部静态变量、函数。

而C++中除了上述功能外,还用来定义类的成员变量和函数。

即静态成员和静态成员函数。

注意:编程时static的记忆性,和全局性的特点可以让在不同时期调用的函数进行通信,传递信息,而C++的静态成员则可以在多个对象实例间进行通信,传递信息。

11. C中的malloc和C++中的new有什么区别?malloc和new有以下不同:(1)new、delete 是操作符,可以重载,只能在C++中使用。

(2)malloc、free是函数,可以覆盖,C、C++中都可以使用。

(3)new 可以调用对象的构造函数,对应的delete调用相应的析构函数。

(4)malloc仅仅分配内存,free仅仅回收内存,并不执行构造和析构函数(5)new、delete返回的是某种数据类型指针,malloc、free返回的是void指针。

注意:malloc申请的内存空间要用free释放,而new申请的内存空间要用delete释放,不要混用。

因为两者实现的机理不同。

12. 关键字const是什么含意及作用?const意味着“只读”。

(1) 关键字const 告诉了用户这个参数的应用目的。

(2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。

(3)合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。

13.下面的声明都是什么意思?const int a;int const a;const int *a;int * const a;int const * a const;答案:前两个的作用是一样,a是一个常整型数。

第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。

第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。

最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。

14.Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。

也可以用预处理器做类似的事。

例如,思考一下下面的例子:#define dPS struct s *typedef struct s * tPS;以上两种情况的意图都是要定义dPS 和tPS 作为一个指向结构s指针。

哪种方法更好呢?(如果有的话)为什么?答案:typedef更好。

例如:dPS p1,p2;tPS p3,p4;第一个扩展为struct s * p1, p2;上面的代码定义p1为一个指向结构的指,p2为一个实际的结构。

第二个例子正确地定义了p3 和p4 两个指针。

15.变量的声明和定义有什么区别?为变量分配地址和存储空间的称为定义,不分配地址的称为声明。

一个变量可以在多个地方声明,但是只在一个地方定义。

加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。

说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。

16. 写出bool 、int、float、指针变量与“零值”比较的if语句。

bool型数据:if( flag ) { A; } else { B;}int型数据:if( 0 != flag ) { A; } else { B;}指针型数:if( NULL == flag ) { A; } else { B;}float型数据:if ( ( flag >= NORM ) && ( flag <= NORM ) ) { A;}else{B;}注意:应特别注意在int、指针型变量和“零值”比较的时候,把“零值”放在左边,这样当把“==”误写成“=”时,编译器可以报错,否则这种逻辑错误不容易发现,并且可能导致很严重的后果。

17. sizeof和strlen有什么区别?sizeof和strlen有以下区别:sizeof是一个操作符,strlen是库函数。

sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为‘\0‘的字符串作参数。

编译器在编译时就计算出了sizeof的结果。

而strlen函数必须在运行时才能计算出来。

并且sizeof计算的是数据类型占内存的大小,而strlen计算的是字符串实际的长度。

数组做sizeof的参数不退化,传递给strlen就退化为指针了。

注意:有些是操作符看起来像是函数,而有些函数名看起来又像操作符,这类容易混淆的名称一定要加以区分,否则遇到数组名这类特殊数据类型作参数时就很容易出错。

最容易混淆为函数的操作符就是sizeof。

18. 简述C、C++程序编译的内存分配情况。

C、C++中内存分配方式可以分为三种:(1)从静态存储区域分配:内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。

速度快、不容易出错,因为有系统会善后。

例如全局变量,static变量等。

相关文档
最新文档