嵌入式Linux应用程序设计(试题)1、嵌入式linux操作系统的特点(多选)ABCDEA、低廉性B、广泛性C、可移植性好D、良好的网络支持E、实时性好2、Linux的基本思想有两点:A、一切都是文件;B、每个软件都有确定的用途。3、嵌入式Linux系统构成:嵌入式微处理器,外围硬件设备,嵌入式操作系统,用户应用程序。4、硬盘分区一般分为:主分区,扩展分区,逻辑分区,交换分区5、主分区和扩展分区的最大的区别:CA、大小不一样B、挂载点不一样C、主分区的作用就是用来进行启动操作系统的,因此引导程序都应该存放在主分区上。D、主分区在硬盘物理位置的最前面6、Linux分区类型默认的是:CA.vfatB.ext2/ext3C.swapD.dos7、如何从当前系统中卸载一个已装载的文件系统AA.umount[挂载点目录]B.dismountC.mount–u[挂载点目录]D.从/etc/fstab中删除这个文件系统项8、用户切换指令是:AA、suB、sudoC、useraddD、userdel9、查看当前系统中的进程指令AA、psB、killC、catD、man10、下面杀死一个ID号为9号的进程的操作正确的是CA、ps-efB、kill9C、kill-99D、rm911、使用重定向来把ls输出保存到文件test.txt中:AA、lstest.txtB、lstest.txtC、ls|test.txtD、ls|greptest.txt12、使用重定向来把test.txt文件中内容输出:BA、moretest.txtB、moretest.txtC、more|test.txtD、more|greptest.txt13、解压文件tar.tar.gz:CA、tar-zxvftar.tar.gzB、tar-jxvftar.tar.gzC、tar-cxvftar.tar.gzD、tar-jvftar.tar.gz14、把目录/aaa内文件及目录的压缩到文件tar.tar.gz:DA、tar-zxvftar.tar.gz/aaaB、tar-jxvftar.tar.gz/aaaC、tar-cxvftar.tar.gz/aaaD、tar-cvftar.tar.gz/aaa15、vi有几种模式:三种模式16、vi中的操作指令::w保存:q退出:q!强行退出:wq保存退出:w[filename]保存到filename文件中:setnu显示行号,设定之后,会在每一行的前面显示对应行号:setnonu取消行号显示17、Shell是:命令语言,命令解释程序及程序设计语言的统称。它不仅拥有自己内建的命令集,同时也能被系统中其他应用程序所调用18、Shell中使用变量无需事先声明,同时变量名的命名须遵循如下规则:BA、首个字符必须为字母(a-z,A-Z)B、中间不能有空格,可以使用下划线(_)C、不能使用标点符号D、不能使用bash里的关键字(可用help命令查看保留关键字)19、Shell中如何给变量赋值:使用符号“=”来给变量赋值19、Shell中特殊符号的意义:#-注释符号;-结束符-字符串符号''-char类型的字符\-转义符/-目录`-完全匹配*-通配符20、使用“./”命令会执行该脚本,同时显示所有变量的值21、使用“Wall”命令会返回所有语法错误22、Makefile基本结构是:需要make工具创建目标体,通常是目标文件或可执行文件。要创建的目标体所依赖的文件。创建每个目标体需要运行的命令。23、列出了Makefile中常见预定义变量及其部分默认值24、常用的make命令行选项25、gcc的编译流程分为了4个步骤,分别为:预处理,编译,汇编,连接26、gcc选项-c的作用是:只编译,不连接27、gcc选项-S的作用是:只编译,不汇编28、gcc选项-E的作用是:只进行预编译,不做其他处理29、gcc选项-g的作用是:产生符号调试工具所必要的符号资讯。30、gcc选项-Idir的作用是:将dir所指出的目录加入到程序头文件目录列表中。31、gcc选项-Ldir的作用是:将dir所指出的牡蛎加入到程序函数档案库文件的目录列表中,是在连接过程中使用的参数。32、gcc选项-llib的作用是:连接名为lib的库文件。33、gcc选项-Wall的作用是:允许发出gcc提供的所有有用的报警信息。34、gcc选项-std=gnu99的作用是:支持GNU99的编译器,还有一种是C99。35、安装交叉编译器的步骤:命令格式含义AR库文件维护程序的名称AS汇编程序的名称CCC编译器的名称CPPC预编译器的名称CXXC++编译器的名称RM文件删除程序的名称ARFLAGS库文件维护程序的选项ASFLAGS汇编程序的选项CFLAGSC编译器的选项CPPFLAGSC预编译器的选项CXXFLAGSC++编译器的选项-Cdir读入指定目录下的Makefile-ffile读入当前目录下的file文件作为Makefile-i忽略所有的命令执行错误-Idir指定被包含的Makefile所在目录-n只打印要执行的命令,但不执行这些命令-p显示make变量数据库和隐含规则-s在执行命令时不显示命令-w如果make在执行过程中改变目录,则打印当前目录名先解压配置环境变量在~/.bashrc这个文件中把执行文件的路径写入配置后需要重新加载source~/.bashrc,之后就可以用这个进行编译36、Linux下的minicom和Windows下的超级终端的作用是:Linux的超级终端是对内核的操作,是一个命令的集合,Windows下的超级终端是执行命令37、在使用GDB调试程序时,如何设置断点:bnum(在第num行加上断点)38、在使用GDB调试程序时,如何运行程序:r39、在使用GDB调试程序时,如何实现从指定代码位置开始单步运行:n39、在使用GDB调试程序时,如何查看断点处的相关变量值:infob40、举例说明野指针的产生原因及防范方法在数组越界之后就会产生野指针。一般遇到这种情况之后我们尽量是数组不越界。41、内存泄漏的防范做到随时关闭文件描述符,套接字描述符,做到关闭不用的资源42、什么是系统调用系统调用是指操作系统提供用户程序调用的一组“特殊”接口,相当于API43、标准I/O和低级I/O的区别标准I/O有缓冲区低级I/O没有缓冲区44、什么是进程进程是操作系统结构的基础,是一个执行的程序;45、简述创建进程的方法用fork函数来创建进程46、管道的读规则、管道的写规则父子进程在运行时,它们的先后次序并不能保证,因此,在这里为了保证父进程已经关闭了读描述符,可在子进程中调用sleep函数。47、有名管道的打开规则、有名管道的读规则、有名管道的写规则只有在管道的读端存在时向管道中写入数据才有意义向管道中写入数据时,linux将不保证写入的原子性,管道缓冲区一有空闲区域,写进程就会试图向管道写入数据。如果读进程不读取管道缓冲区中的数据,那么写操作将会一直阻塞。48、信号的生命周期信号的生命周期是信号的产生,信号的注册,信号的注销,信号的处理49、捕获信号后的三种处理方式:忽略信号,捕捉信号,执行缺省操作。50、信号的副作用当一个信号被堵塞时,其他的信号就会延时51、什么是线程线程是进程的一个实体,一个进程中可以有多个线程,线程的资源是共享的。52、简述二进制信号量和互斥量的作用信号量的作用:用来保证两个或多个关键代码段不被并发调用,在这个关键代码段之前必须获取一个信号量,否则一直等待下去;互斥锁的作用:保证共享数据操作的完整性;53、什么是套接字套接字就是程序利用socket创建而获得的一个非负整型值进程之间的通信都是通过操作套接字来完成的54、什么是字节序其实就是网络字节序,大端小端的问题55、用C或是伪代码描述4种基于TCP的服务器模型select的TCP的服务器模型socketbindlisten初始化数组(用来放套接字描述符是否存在),select实现多路复用acceptsend/recvclosepoll的TCP的服务器模型socketbindlisten初始化结构体pollfd,poll实现多路复用acceptsend/recvclosepthread的TCP的服务器模型socketbindlistenacceptpthread_createsend/recvcloseprocesssocketbindlistenacceptforksend/recvclose56、编写一个线程安全函数,并说明函数的可重入性函数的可重入性就是这个函数可以多次调用而各个调用之后的值互补干扰;void*routine(int*arg){intnum=(int)arg;num++;`printf(“%d\n”,num);return(void*)0;}intmain(){pthread_tpid;intret=pthread_create(&pid,NULL,(void*)routine,1);if(-1==ret){perror(“pthread_create”);exit(-1);}ret=pthread_create(&pid,NULL,(void*)routine,2);if(-1==ret){perror(“pthread_create”);exit(-1);}pthread_join(&pid,NULL);return-1;}