嵌入式应用开发期末练习题_第1页
嵌入式应用开发期末练习题_第2页
嵌入式应用开发期末练习题_第3页
嵌入式应用开发期末练习题_第4页
嵌入式应用开发期末练习题_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——嵌入式应用开发期末练习题一、填空题

1、linux中,对串口参数进行配置的数据结构名是__termios____。

2、gcc的编译流程分为4个步骤:预处理、__编译____、汇编、__链接____。3、获取当前进程ID的方法是__getpid()____。

4、对文件的开启操作有open和fopen,它们哪个是标准库函数__fopen()

____它的返回值是__指向FILE的指针____。

5、一个由c语言占用的内存分为代码区和数据区,数据区又可以分为__静态数据区____和动态数据区,动态数据区分为堆、__栈____。

6、linux的管道通信可以分为匿名管道、___有名管道___和__标准管道____。7、linux中的网络编程是通过套接字接口来进行的,常见的套接字有三种类型:

___流式套接字___、__数据报套接字____和__原始套接字____。8、在linux中,用户空间的进程可以直接通过___系统调用___来获取操作系统

内核提供的服务。

9、linux中,对串口进行操作的函数中,激活串口配置的函数是__tcsetattr()

____。10、

linux中使用较多的进程间通信方式包括管道、信号、信号量、___消息

队列___、__共享内存____。11、

makefile规则是make进行处理的依据,它包括了__依靠文件____、

___目标体___及其之间的命令语句。12、

互斥锁和信号量为linux中的线程同步机制,其中___信号量___适合于

同时可用的资源为多个的状况。13、

系统调用分为进程控制、进程间通信、文件系统管理、系统管理、存储

管理、网络管理、socket管理、用户管理等。14、

终端分为3种模式规范模式、非规范模式和原始模式

二、选择题

1.下面关于linux下串口操作正确的描述是

A.串口的奇偶校验必需使能的中止位

C.串口配置好后,其读写操作和普通文件就是一样的了D.串口文件可以通过lseek改变读写指针2.以下关于makefile说法错误的是

A.创立目标体的命令必需以制表符开头B.makefile变量名可以包含“#〞字符串

C.makefile变量对大小写敏感下的makefile

3.以下关于linux多线程编程不正确的是

A.不同进程的线程间不能用信号量来同步;B.pthread线程库符合POSIX接口;C.必需包含头文件pthread.h;

D.“-Cdir〞表示读入指定目录dir

B.不能通过linuxapi设置串口

D.phtread_join()作用是将参数中的指定线程挂起;4.以下关于linux网络编程不正确的说法是

A.send()既可用在tcp中,也可用在udp中;B.sendto()既可用在tcp中,也可用在udp中;C.不管是客户端还是服务器端必需调用bind;

D.每一个socket都用一个半相关描述{本地地址、本地端口}

5.从文件描述符fd中读出200个字节到首地址为buff的缓冲区的正确底层IO

操作是A.read(buff,200,fd);C.read(fd,200,buff);

B.read(fd,buff,200);D.read(200,buff,fd);

6.使用下面哪条命令可以查询目标文件所依靠的动态链接库。

A.nm;C.ld;

B.readelf;

D.objcopy

7.下面关于linux进程控制不正确的描述的是

A.wait()调用一定会使得父进程阻塞

B.exit()会清理IO缓冲,而_exit()不会清理IO缓冲

C.在执行execl函数后,原调用进程的内容除了进程号外,其他全部被新的进程替换了

D.fork()的返回值在父子进程中是不一样的8.将max.c生成动态链接库的正确命令是。

A.gcc–cmax.c

B.gcc-fpic–shared–olibmax.somax.cC.gcc–olibmax.somax.c

D.gcc–static–olibmax.somax.c9.下面关于linux进程通信正确的是

A.信号量是进程间通信机制中唯一同步机制B.消息队列读取函数msgrcv()只能读取队头的消息

C.共享内存的实现分为两个步骤:创立或开启共享内存和映射共享内存D.信号量既可以解决进程间的同步问题,但不能解决进程间的互斥问题。10.linux网络编程中,下面哪个函数是客户端、服务端所必需调用的。

A.listen()B.accept()C.socket()D.bind()

11.使用下面哪个函数返回值可知道文件操作已到文件末尾A.fopenB.ftellC.feofD.fseek三、判断题

1.select主要解决了多路IO复用的问题。(√)

2.嵌入式linux的底层IO函数(如read())带有缓冲区,可直接对文件进行读

写操作。(X)不带缓冲区

3.嵌入式linux的标准IO函数(如fread())不带有缓冲区,可直接对文件进行

读写操作。(X)不可直接对文件操作

4.linuxapi是linux操作系统直接提供的函数接口。(X)不是直接

5.参数“-static〞的作用是告诉gcc与库进行静态链接。(√)

6.internet上的数据在网络上是以高位字节优先的顺序在网络上传输的。(√)7.创立线程的实质就是确定该线程函数的入口点,寻常使用的函数是

pcreate_thread。(X)pthread_create

8.当linux线程出现错误的时候,可以使用exit()终止线程。(X)pthread_exit9.fork()函数是linux中一个十分重要的函数,在子进程中其返回值等于0。

(√)

10.linux中不是所有的socket都要调用bind函数进行端口绑定。(√)11.标准IO函数fread读取成功时返回的是成功读取的记录数。(X)记录数

的数目

12.底层IO函数read读取成功返回的的时成功读取字节数(√)

13.在linux中,每个api都会对应一个或多个系统调用(X)可以不对应14.Internet上的数据在网络上是以低位字节优先的顺序在网络上传输的(X)

高位字节

15.select主要解决了多路IO复用的问题(√)poll也是

16.linux中socket一定要调用bind函数进行端口绑定(X)TCP要,UDP

不用

17.参数“-static〞的作用是告诉gcc与库进行静态链接(√)“-shared〞

动态链接

18.fork()函数是linux中一个十分重要的函数,假使成功,父进程中其返回

值大于1(√)子进程返回0,父进程返回子进程的进程号

19.参数“-fpic〞的作用是告诉gcc生产与位置相关的目标代码(X)无关20.普通可实现进程间的全双工通信(X)半双工

四、简答题

1.画图说明linux系统下用TCP协议网络编程时客户端和服务器的步骤。

2.画图说明linux系统下用UDP协议网络编程时客户端和服务器的步骤。

3.简述linux系统调用、API及系统命令之间的关系。

系统调用是指操作系统提供给用户程序调用的一组“特别〞接口,用户程序可以通过这组“特别〞接口来获得操作系统内核提供的服务。而实际使用过程中,我们寻常调用的用户编程接口就是API;系统命令相对API更高了一层,它实际上一个是可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能。

他们的关系:

4.#简述在linux下实现进程通信的几种方式的各自特点?匿名管道:具有亲缘关系的进程间,半双工,数据在内存中有名管道:可用于任意进程间,双工,有文件名,数据在内存信号:唯一的异步通信方式

消息队列:常用于cs模式中,按消息类型访问,可有优先级,无须同步机制。共享内存:效率最高(直接访问内存),需要同步、互斥机制信号量:用于解决进程间的同步与互斥问题的一种进程间通信机制

5.#共享内存是如何实现进程通信的?它是用什么方法(函数):创立、映射、

撤销映射、删除?。

创立/开启共享内存.ftok(),shmget()

映射共享内存,即把指定的共享内存映射到进程的地址空间用于访问.shmat()撤销共享内存映射.shmdt()删除共享内存对象.shmctl()6.#创立守护进程的过程:①调用fork创立子进程。

父进程终止,让子进程在后台继续执行。

②子进程调用setsid产生新会话期并失去控制终端

调用setsid()使子进程成为新会话组长和新的进程组长,同时失去控制终端③改变当前工作目录为根目录chdir()

一般将工作目录改变到根目录,这样进程的启动目录也可以被卸掉。④重设文件创立掩码umask()

清除从父进程那里继承来的文件创立掩码,设为0。⑤关闭开启的文件描述符close()⑥用openlog函数建立与syslogd的连接

五、编程题

1、请使用open、read、write、lseek、fork、pipe、sleep和waitpid等函数实现如下功能:

1)子进程把src.txt文件末尾的5个字符读出来;

2)再通过管道发送给父进程;

3)父进程收到后将它们输出到显示终端。

注意:请自行定义运行过程中的提醒信息,头文件可省略!

#include#include#include#include#include#include#include

#definesrc\intmain(){

intsrc_file,pipe_fd[2];pid_tpid;

unsignedcharbuff[5],buff1[10];intreal_read;

src_file=open(src,O_RDONLY);if(src_file#include

#include#include#include#include#include#include

#definePORT4321#defineBUFFER_SIZE1024#defineMAX_QUE_CONN_NM5

intmain(){

structsockaddr_inserver_sockaddr,client_sockaddr;intsin_size,recvbytes;intsockfd,client_fd;charbuf[BUFFER_SIZE];/*建立socket连接*/

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){

perror(\exit(1);}

printf(\/*设置sockaddr_in结构体中相关参数*/server_sockaddr.sin_family=AF_INET;server_sockaddr.sin_port=htons(PORT);

server_sockaddr.sin_addr.s_addr=INADDR_ANY;bzero(

inti=1;/*允许重复使用本地地址与套接字进行绑定*/

setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,/*绑定函数bind()*/

if(bind(sockfd,(structsockaddr*)}

printf(\

/*调用listen()函数,创立未处理请求的队列*/if(listen(sockfd,MAX_QUE_CONN_NM)==-1){

perror(\exit(1);}

printf(\

sin_size=sizeof(structstructsockaddr);

/*调用accept()函数,等待客户端的连接,并创立一个新的socket为本次连接服务*/

if((client_fd=accept(sockfd,(structsockaddr*)}

/*调用recv()函数接收客户端的请求*/memset(buf,0,sizeof(buf));

if((recvbytes=recv(client_fd,buf,BUFFER_SIZE,0))==-1){

perror(\exit(1);}

printf(\close(sockfd);exit(0);}

2、用UDP协议实现(只须编写服务器端程序):

服务器端首先建立起socket,然后与本机IP和端口进行绑定,接着可循环接收客户端发送的消息并显示出来,当收到“exit〞时退出。#include#include#include#include#include#include#include

intmain(void){

intsockfd;

structsockaddr_inserver,client;intport=1234;

intopt=SO_REUSEADDR;intrt;

intaddrlen;//charsendbuf[100];charrbuf[100];intnum;

sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd==-1){}

//避免出现地址已经使用的错误

setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,

perror(\exit(1);

bzero(

server.sin_family=AF_INET;

server.sin_addr.s_addr=INADDR_ANY;//回送地址,指本地机,一般用来

测试使用

server.sin_port=htons(port);

rt=bind(sockfd,(structsockaddr*)if(rt==-1){

perror(\exit(1);

}

addrlen=sizeof(client);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论