嵌入式linu应用程序开发测试题.docx
- 文档编号:19017741
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:10
- 大小:19.01KB
嵌入式linu应用程序开发测试题.docx
《嵌入式linu应用程序开发测试题.docx》由会员分享,可在线阅读,更多相关《嵌入式linu应用程序开发测试题.docx(10页珍藏版)》请在冰豆网上搜索。
嵌入式linu应用程序开发测试题
嵌入式Linux应用程序开发测试题(14级嵌入式方向专用)
一、选择题
1、下列哪一项不是嵌入式操作系统的特点 D
A、占有资源少 B、低成本 C、高可靠性 D、交互性
2、在Linux内核配置过程中,下面哪项命令采用的是基于图形窗口模式的配置界面 C
A、make config B、make menuconfig
C、make xconfig D、make oldconfig
3、在Linux内核配置过程中,下面哪项命令建立依赖关系 C
A、make config B、make menuconfig
C、make dep D、make clean
4、交叉编译器中,下面哪项不是必需包含的 D
A、glibc B、gcc C、binutils D、tmake
5、内核的编译主要步骤不包括下面哪项 D
A、内核配置 B、建立依存关系 C、建立内核 D、加载内核
6、内核编译时选项前的尖括号中可以是空,*,M,其中*表示 C
A、选项将编译为模块 B、不包含选项 C、包含选项
7、Bootloader的stage1阶段主要完成的工作不包括下面哪项 D
A、基本的硬件初始化
B、为加载stage2准备RAM空间 C、拷贝stage2到RAM中
D、用汇编语言跳转到main入口函数
8、GCC的正确编译流程为 A
A、预处理-编译-汇编-链接
B、预处理-编译-链接-汇编
C、预处理-链接-编译-汇编
D、编译-预处理-汇编-链接
9、如需GCC提供编译过程中所有有用的报警信息,则在编译时应加入选项 B
A、-w B、-Wall C、-werror D、-error
10、下面哪些与GDB相关的说法是错误的 B
A、GDB能调试可执行文件 B、GDB能调试源代码
C、GDB对编译过程有要求 D、GDB支持交叉调试
11、在GDB调试过程中,使用下面哪项命令设置断点,其中m代表行号 A
A、b m B、c m C、n m D、s m
12、open函数原型中的O_RDWR标志表示文件打开方式为 C
A、只读方式打开文件 B、可写方式打开文件
C、读写方式打开文件
D、以添加方式打开文件,在打开文件的同时,文件指针指向文件末尾
13、在Linux操作系统中,串口设备的设备名一般为 C
A、com1 B、port1 C、ttyS0 D、serl1
14、下面哪项对Linux操作系统下fork函数的描述是错误的 D
A、fork函数执行一次返回两个值 B、新进程称为子进程,而原进程称为父进程
C、父进程返回值为子进程的进程号 D、子进程返回值为父进程的进程号
15、编写守护进程的第一步为 A
A、创建子进程,父进程退出 B、在子进程中创建新会话
C、改变当前目录为根目录 D、关闭文件描述符
16、在关于TCP/UDP的描述中,下面哪项是错误的 C
A、TCP数据传输实现了从一个应用程序到另一个应用程序的数据传递
B、TCP对话通过三次握手来完成初始化
C、UDP即用户数据报协议是一种面向连接的协议
D、一个UDP应用可同时作为应用的客户或服务器方
17、常见的socket类型中不包括下面哪项 C
A、SOCK_STREAM B、SOCK_DGRAM C、SOCK_DTRAN D、SOCK_RAW
18、以下哪项不是autotools系列工具之中的一种。
C
A、automakeB、autoconfC、autocleanD、autoscan
19、下列关于网络编程的叙述中,错误的是 B 。
A.一个完整的网络程序应该包含两个独立的程序,它们分别运行在客户端和服务器端。
B.当使用UDP编程时,如果函数sendto( )函数成功返回,表示系统发出的数据被通讯的对方准确接收到了。
C.相同条件下UDP发送数据的速度要比TCP快。
D.端口号是16bit的地址码,端口号和IP地址构成一个插口(socket)。
20、下列makefile自动变量中,表示目标文件完整名称的是
A、$@B、$ 二、填空题 1、Linux中最常用的编译器是____编译器。 答案: gcc 2、gdb对____文件进行调试。 答案: 可执行 3、工程管理器make读入的配置文件为____。 答案: Makefile或makefile 4、工程管理器make定义了____规则和模式规则。 答案: 隐含 5、嵌入式软件开发所采用的编译过程为____编译。 答案: 交叉 6、在嵌入式软件开发中,将程序实际的运行环境称为____机。 答案: 目标 7、一个进程启动时,通常都会打开____个文件。 答案: 3 8、在Linux中,实现文件上锁的函数有lock和____。 答案: fcntl 9、Daemon进程即通常所说的____进程,是Linux中的后台服务进程。 答案: 守护 10、在Linux中使用____函数创建一个新进程。 答案: fork 11、fork函数调用后出现父进程与子进程,其中____的返回值为0。 答案: 子进程 12、____函数族就提供了一个在进程中启动另一个程序执行的方法。 答案: exec 13、exit()函数与_exit()函数最大的区别就在于____函数在exit系统调用之前要检查文件的打开情况,并将文件缓冲区中的内容写回文件。 答案: exit 14、____函数是用于使父进程阻塞,直到一个子进程结束或者该进程接到了一个指定的信号为止。 答案: wait 15、在Linux中,所有的孤儿进程自动由____进程收养。 答案: init 16、Linux中的网络编程通过____接口来进行。 答案: socket 17、SOCK_DGRAM为____套接字。 答案: 数据报 三、程序填空和阅读分析题 1、下列程序在父子进程之间创建了一个管道,,实现父进程向子进程写数据的功能。 阅读下列程序,并写出标号所示的功能。 #include<> #include #include<> #include<> #include<> intmain() { intpipe_fd[2]; pid_tpid; charbuf_r[100]; char*p_wbuf; intr_num; memset(buf_r,0,sizeof(buf_r)); (1)将数据缓冲区清0 if(pipe(pipe_fd)<0) (2)创建管道 { printf("pipecreateerror\n"); return-1; } if((pid=fork())==0)(3)创建子进程 { printf("\n"); close(pipe_fd[1]);(4)关闭子进程写描述符 sleep (2); if((r_num=read(pipe_fd[0],buf_r,100))>0)(5)子进程读取管道内容 { printf("%dnumbersreadfromthepipeis%s\n",r_num,buf_r); } close(pipe_fd[0]);(6)关闭子进程读描述符 exit(0); } elseif(pid>0)(7)父进程运行控制语句 { close(pipe_fd[0]);(8)关闭父进程的读描述符 if(write(pipe_fd[1],"Hello",5)! =-1)(9)将数据写入缓冲区 printf("parentwrite1success! \n"); if(write(pipe_fd[1],"Pipe",5)! =-1) printf("parentwrite2success! \n"); close(pipe_fd[1]);(10)关闭父进程写描述符 sleep(3); waitpid(pid,NULL,0);阻塞方式等待子进程结束 exit(0); } } 2、阅读程序,写出程序的执行结果,并分析程序的执行过程。 (假设父子进程均可在一个时间片内执行完,且操作系统每次均先调度子进程。 ) #include #include <> int main() { pid_t result; int count=5; printf("before fork,count=%d\n",count); result=fork(); if(result<0) printf("fork fail\n"); else if(result>0) { count++; printf("This is parent! \n”); } else { count--; printf("This is child! \n"); } printf("after fork count=%d\n",count); return 0; } before fork,count=5 This is child after fork count=4 This is parent! after fork count=6 程序的执行过程如下: 程序先定义了两个变量result和count,然后输出变量count的值, 得到"before fork count=5"这一行输出。 当执行到result=fork()时程序分叉,产生父子两个进程。 系统首先调度子进程执行,直至子进程结束。 而在子进程中result为0,故走的是条件分支的最后一个分支,输出: This is child. after fork count=4 子进程执行完了之后调度父进程执行,直至父进程结束。 而在父进程中result为子进程号,大于0,于是走条件分支的第二个个分支,输出: This is parent after fork count=6 四、编程题 1、编写一个C语言源程序, (1)用以在打开当前目录下的文件“”,如果没有则创建该文件,并使其具有读写属性, (2)编写一个makefile实现自动编译,生成可执行文件ex。 voidmain(void) { intfid; fid=open(“./”,O_RDWR|O_CREAT); if(fid==-1) { printf(“openorcreateerror\n”); exit(0); } close(fid); } objects= exec=ex all: $(objects) gcc–o$(exec)$(objects) : gcc–c clean: rm–r$(exec)$(objects) 2、假定你在目录/root/arm下有一个C程序,它由几个单独的文件组成,而这几个文件又分别包含了其他文件,如下图所示: 文件 包含文件 试编写makefile文件,最终的目标文件为ex1(交叉编译器为arm-linux-gcc) CC=arm-linux-gcc ex1: $(CC)-oex1 : $(CC)-c-o : $(CC)-c-o : $(CC)-c-o : $(CC)-c-o clean: rmex*.o 五、简答题 1、什么是交叉编译嵌入式交叉编译怎么实现 2、Bootloader启动流程是怎么样的 3、比较全缓冲、行缓冲和不带缓冲,并说明标准输入输出、标准错误各使用哪种类型的缓冲 4、编写守护进程包括哪几个步骤,每个步骤分别怎么实现 5、进程的信号与信号量通信有什么区别 6、无名管道和有名管道在使用时有什么区别分别使用什么函数创建无名管道和有名管道
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 linu 应用程序 开发 测试