当前位置: 迅达文档网 > 党团工作 >

嵌入式Linux应用程序开发测试题

| 来源:网友投稿

 嵌入式 x Linux 应用程序开发测试 题(4 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、automake

 B、autoconf

  C、autoclean

  D、autoscan 19、下列关于网络编程的叙述中,错误的是 B

  。

 A.一个完整的网络程序应该包含两个独立的程序,它们分别运行在客户端和服务器端。

 B.当使用 UDP 编程时,如果函数 sendto( )函数成功返回,表示系统发出的数据被通讯的对方准确接收到了。

 C.相同条件下 UDP 发送数据的速度要比 TCP 快。

 D.端口号是 16bit 的地址码,端口号和 IP 地址构成一个插口(socket)。

 20、下列 makefile 自动变量中,表示目标文件完整名称的是 A、$@

 B、$<

  C、$^

  D、$% 二、填空题 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 <unistd.h> #include <sys/types.h> #include <errno.h> #include <stdio.h> #include <stdlib.h>

 int main() {

 int pipe_fd[2];

 pid_t pid;

  char buf_r[100];

 char* p_wbuf;

 int r_num;

 memset(buf_r,0,sizeof(buf_r)); (1)

 将数据缓冲区清 0

  if(pipe(pipe_fd)<0)

 (2)

 创建管道

 {

 printf("pipe create error\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(

  "%d numbers read from the pipe is %s\n",r_num,buf_r);

  }

 close(pipe_fd[0]);

 (6)

 关闭子进程读描述符

  exit(0);

 }

 else if(pid>0)

 (7) 父进程运行控制语句

 {

  close(pipe_fd[0]);

  (8)

 关闭父进程的读描述符

  if(write(pipe_fd[1],"Hello",5)!=-1)

  (9)

 将数据写入缓冲区

 printf("parent write1 success!\n");

  if(write(pipe_fd[1]," Pipe",5)!=-1)

 printf("parent write2 success!\n");

  close(pipe_fd[1]);

 (10)

 关闭父进程写描述符

  sleep(3);

  waitpid(pid,NULL,0);阻塞方式 等待子进程结束

  exit(0);

 } } 2、阅读程序,写出程序的执行结果,并分析程序的执行过程。(假设父子进程均可在一个时间片内执行完,且操作系统每次均先调度子进程。)

  #include <sys/types.h>

 #include <unistd.h>

 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语言源程序 ex.c,(1)用以在打开当前目录下的文件“ex.txt”,如果没有则创建该文件,并使其具有读写属性,(2)编写一个makefile 实现自动编译,生成可执行文件 ex。

 void main(void) {

 int fid;

 fid = open(“./ex.txt”,O_RDWR|O_CREAT);

  if(fid==-1)

 {

  printf(“open or create error \n”);

  exit(0); } close(fid); }

 objects = ex.o

  exec = ex

  all:$(objects)

  gcc –o $(exec) $(objects)

 ex.o:ex.c

 gcc –c ex.c

  clean:

  rm –r $(exec) $(objects)

 2、假定你在目录/root/arm 下有一个 C 程序,它由几个单独的文件组成,而这几个文件又分别包含了其他文件,如下图所示:

 文件 包含文件 main.c stdio.h, table.h list.c list.h symbol.c symbol.h table.c table.h table.h symbol.h, list.h 试编写 makefile 文件,最终的目标文件为 ex1(交叉编译器为 arm-linux-gcc)

 CC=arm-linux-gcc ex1: main.o list.o symbol.o table.o

  $(CC) -o ex1 main.o list.o symbol.o table.o main.o: main.c table.h symbol.h list.h

  $(CC) -c -o main.o main.c list.o: list.c list.h

 $(CC) -c -o list.o list.c symbol.o: symbol.c symbol.h

  $(CC) -c -o symbol.o symbol.c table.o: table.c table.h symbol.h list.h $(CC) -c -o table.o table.c

 clean: rm ex *.o 五 、 简答 题

 1、什么是交叉编译?嵌入式交叉编译怎么实现? 2、Bootloader 启动流程是怎么样的? 3、比较全缓冲、行缓冲和不带缓冲,并说明标准输入输出、标准错误各使用哪种类型的缓冲? 4、编写守护进程包括哪几个步骤,每个步骤分别怎么实现? 5、进程的信号与信号量通信有什么区别? 6、无名管道和有名管道在使用时有什么区别?分别使用什么函数创建无名管道和有名管道?

推荐访问:嵌入式 程序开发 测试题

热门排行

党委党组落实全面从严治党主体责任规定指出本地区本单位发生重大违纪违法案件14篇

党委党组落实全面从严治党主体责任规定指出本地区本单位发生重大违纪违法案件14篇党委党组落实全面从严治党主体责任规定指出本地区本单位发生重大违纪违法案件篇1我

2022年五星支部创建实施方案5篇

2022年五星支部创建实施方案5篇2022年五星支部创建实施方案篇1为切实提高支部党建工作科学化水平、不断夯实党建基础,挖掘支部党建特色,创新支部党建工作做

七言绝句古诗精选【十首】

【 能力训练 导语】七言绝句是中国传统诗歌的一种体裁,简称七绝,属于近体诗范畴。此体全诗四句,每句七

2022年支部党员大会记录内容14篇

2022年支部党员大会记录内容14篇2022年支部党员大会记录内容篇120xx年度我校新党员发展工作已经开始。根据学校党委3月21日会议精神,今年新党员发展

统计工作如何为企业管理服务

作为企业管理重要组成部分的统计工作,在企业的经济运行中发挥着信息、咨询和监督三大作用,它为企业的经营

乡镇创建无毒社区工作方案

一、指导思想以“三个代表”重要思想为指导,认真贯彻落实上级精神,以禁吸戒毒为中心,全面落实禁毒工作责

四年级我家菜园日记500字

菜园子,就是种菜的地方。种菜的时候为了防止家禽进入菜地,于是农夫用篱笆或者栅栏将菜地围起来形成的一个

哈尔移动城堡电影观后有感范本

在观看完一部作品以后,相信你会有不少感想吧,这时我们很有必要写一篇观后感了。可能你现在毫无头绪吧,下

党支部2022年学习计划14篇

党支部2022年学习计划14篇党支部2022年学习计划篇1认真坚持“三会一课”制度,对于加强支部建设,提高党的战斗力、健全党的生活,严格党员管理,充分发挥党