Linux系统编程试题C

合集下载

Linux C 面试题

Linux C 面试题

一.填空题:1. 在Linux系统中,以文件方式访问设备。

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

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

Linux文件系统使用索引节点来记录文件信息,作用于Windows的文件分配表类似,索引节点是一个数据结构,它包含了一个文件的文件名,位置,大小,建立或修改时间,访问权限,所属关系等文件控制信息,一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引结点数组中的唯一一个元素对应,系统为每个索引结点分配了一个号码,也就是该结点在数组中的索引号,称为索引结点号。

Linux文件系统将文件索引结点号和文件名同时保存在目录中,所以目录只是将文件的名称和它的索引结点号结合在一起的一张表。

目录中每一对文件名称和索引结点号称为一个连接。

4. 全部磁盘块由四个部分组成,分别为引导块、专用块、i节点表块和数据存储块。

Linux系统中的每个文件都被赋予一个唯一的数值,这个数值称做索引节点。

索引节点存储在一个称作索引节点表<inode table>中,该表在磁盘格式化时被分配。

每个实际的磁盘或分区都有其自己的索引节点表。

一个索引节点包含文件的所有信息,包括磁盘上数据的地址和文件类型。

文件类型包括如普通文件、目录和特殊文件这样的信息。

linux硬盘组织方式为:引导区、超级块(superblock),索引结点(inode),数据块(datablock),目录块(diredtory block)。

其中超级块中包含了关于该硬盘或分区上的文件系统的整体信息,如文件系统的大小等;超级块后面的数据结构是索引结点,它包含了针对某一个具体文件的几乎全部信息,如文件的存取权限、所有者、大小、建立时间以及对应的目录块和数据块等;数据块是真正存储文件内容的位置。

但是索引结点中不包括文件的名字,文件名是放在目录块里的。

目录块里包含有文件的名字以及此文件的索引结点编号。

嵌入式linux c开发常见笔试题目

嵌入式linux c开发常见笔试题目

嵌入式Linux C开发的常见笔试题目主要围绕C语言基础、Linux操作系统以及嵌入式系统开发等方面。

以下是一些可能的笔试题目:
1. 请解释C和C++的主要区别。

2. 描述一下静态变量和全局变量在内存中的分配情况。

3. 解释一下什么是预处理器以及它的主要作用。

4. 编写一个程序,实现两个整数的交换而不使用第三个变量。

5. 描述一下进程和线程的区别以及它们之间的关系。

6. 什么是死锁?请列举至少两种导致死锁的情况。

7. 请解释一下中断处理程序的工作原理。

8. 如何在Linux中创建一个新进程?
9. 描述一下Linux中的同步和异步机制。

10. 什么是RTOS?请列举至少两个RTOS的例子。

Linux操作系统下的C语言开发环境搭建测试题

Linux操作系统下的C语言开发环境搭建测试题

Linux操作系统下的C语言开发环境搭建测试题(答案见尾页)一、选择题1. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 设置环境变量C. 编译和运行C程序D. 配置终端2. 在Linux操作系统中,以下哪个命令可以用来编译和运行C程序?A. gccB. g++C. chmodD. make3. 在Linux操作系统中,如何修改默认的编译器路径?A. 修改PATH环境变量B. 使用export命令C. 编辑/etc/profile文件D. 修改gcc的配置文件4. 在Linux操作系统中,安装了GCC编译器后,如何验证其安装成功?A. 输入gcc --version命令B. 输入gcc -v命令C. 输入gcc --configure命令D. 输入gcc -E命令5. 在Linux操作系统中,如何配置终端以方便进行C语言编程?A. 更改终端的提示符B. 安装tmux或screen工具C. 配置bashrc文件6. 在Linux操作系统中,如何使用GDB调试器调试C程序?A. 安装gdb软件包B. 编译程序时添加-g选项C. 使用gdb命令启动程序D. 查看程序内存布局7. 在Linux操作系统中,如何查看源代码文件的内容?A. 使用cat命令B. 使用less命令C. 使用grep命令D. 使用find命令8. 在Linux操作系统中,如何使用vi编辑器编辑C语言源代码文件?A. 进入vi编辑器B. 编辑文件内容C. 保存文件并退出vi编辑器D. 检查文件是否已保存9. 在Linux操作系统中,如何通过FTP上传和下载文件?A. 使用ftp命令B. 使用sftp命令C. 使用scp命令D. 使用ls命令10. 在Linux操作系统中,如何设置用户权限以确保C语言源代码的安全?A. 使用chmod命令B. 使用chown命令C. 使用umask命令D. 使用acl命令11. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?B. 设置环境变量C. 配置编译选项D. 编译和运行C程序12. 在Linux系统下,如何修改一个文件的权限使其可读可写?A. chmod 666 filenameB. chmod 777 filenameC. chmod 644 filenameD. chmod 755 filename13. 在Linux系统下,使用以下哪个命令可以查看文件的详细信息,如文件大小、创建日期等?A. ls -lB. df -hC. tar -xvf file.tarD. stat filename14. 在Linux系统下,如何使用vi编辑器打开一个文件?A. vi filenameB. vim filenameC. nano filenameD. emacs filename15. 在Linux系统下,安装了GCC编译器后,如何验证其是否正确安装?A. echo $PATHB. which gccC. gcc --versionD. all of the above16. 在Linux系统下,如何创建一个新的目录并进入该目录?A. mkdir new_directoryB. cd new_directoryC. rmdir new_directoryD. mkdir -p new_directory17. 在Linux系统下,如何使用grep命令在文本中搜索特定的字符串?A. grep "search_string" filenameB. grep "search_string" filename | lessC. grep "search_string" filename | moreD. all of the above18. 在Linux系统下,如何修改一个文件的换行符为LF(Unix风格)?A. dos2unix filenameB. unix2dos filenameC. cat filename | tr '' '' > filenameD. all of the above19. 在Linux系统下,如何使用find命令查找特定文件?A. find / -name "filename_pattern"B. find . -type f -name "filename_pattern"C. find / -name "filename_pattern" -printD. all of the above20. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装编译器B. 配置编译环境变量C. 安装文本编辑器D. 编写、编译和运行C源代码21. 在Linux操作系统下,以下哪个命令可以用来编译和运行C语言源代码?A. gccB. g++C. chmodD. make22. 在Linux操作系统下,以下哪个命令可以用来安装一个新的C语言库?A. apt-getB. yumC. pacman23. 在Linux操作系统下,以下哪个命令可以用来查看源代码的层次结构?A. catB. grepC. treeD. less24. 在Linux操作系统下,以下哪个命令可以用来创建一个新目录?A. mkdirB. rmdirC. touchD. cp25. 在Linux操作系统下,以下哪个命令可以用来删除一个文件?A. rmB. mvC. rmdirD. cp26. 在Linux操作系统下,以下哪个命令可以用来复制文件或目录?A. cpB. mvC. rmD. ln27. 在Linux操作系统下,以下哪个命令可以用来查看文件的内容?A. catB. grepC. lessD. head28. 在Linux操作系统下,以下哪个命令可以用来查找文件?A. findB. locateD. man29. 在Linux操作系统下,以下哪个命令可以用来查看当前目录的内容?A. lsB. cdC. pwdD. man30. Linux操作系统下,C语言开发环境的搭建需要哪些步骤?A. 安装GCC编译器B. 配置内核头文件C. 安装文本编辑器D. 配置终端环境31. 在Linux操作系统下,如何验证C语言编译成功?A. 编译一个简单的C源代码,观察是否有语法错误B. 使用命令行进入编译后的目录,查看生成的可执行文件C. 在终端中输入编译命令,观察是否有错误信息D. 将编译后的程序在另一个系统中运行,检查功能是否实现32. Linux操作系统下,C语言开发常用的文本编辑器有哪些?A. VimB. EmacsC. nanoD. Kate33. 在Linux操作系统下,如何配置终端环境以便于C语言编程?A. 设置默认编码为UTF-8B. 配置PATH环境变量,确保编译器路径已添加C. 安装并配置版本控制工具(如Git)D. 配置别名,提高编程效率34. 在Linux操作系统下,C语言开发中常用的调试工具有哪些?A. GDB调试器B. DDD调试工具C. Valgrind内存检测工具D. printf()函数调试35. Linux操作系统下,C语言开发环境的搭建过程中,如何配置网络连接?A. 修改网络配置文件,设置静态IP地址B. 关闭防火墙,确保端口畅通C. 配置DNS服务器,解析域名D. 使用Wireshark工具监控网络流量36. 在Linux操作系统下,C语言开发环境中,如何管理项目文件?A. 使用版本控制工具(如Git)进行项目管理B. 使用文件系统树形结构管理项目文件C. 使用目录和文件名来管理项目文件D. 使用标签系统管理项目文件37. Linux操作系统下,C语言开发环境的搭建完成后,如何优化编译速度?A. 升级GCC编译器到最新版本B. 优化编译选项,减少编译时间C. 使用增量编译,避免重复编译D. 使用并行编译,提高编译速度38. 在Linux操作系统下,C语言开发环境的搭建过程中,如何安装必要的库文件?A. 使用包管理器(如apt或yum)安装库文件B. 从官方网站下载库文件并手动安装C. 从源代码编译库文件并安装D. 使用静态链接库文件,减少动态链接的内存开销39. Linux操作系统下,C语言开发环境的搭建完成后,如何进行代码测试和调试?A. 使用GDB调试器进行单步调试B. 使用DDD调试工具查看内存状态C. 使用printf()函数打印变量值进行调试D. 使用单元测试框架进行自动化测试40. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 配置环境变量C. 安装文本编辑器D. 编译和运行C程序41. 在Linux操作系统下,以下哪个命令可以用来查看系统中的所有进程?A. ps -efB. topC. freeD. all42. 在Linux操作系统下,如何修改一个文件的权限使得文件所有者具有读写权限,其他用户只具有读权限?A. chmod 644 filenameB. chmod 755 filenameC. chmod 664 filenameD. chmod 777 filename43. 在Linux操作系统下,使用以下哪个命令可以查看当前目录下的隐藏文件?A. ls -aB. ls -lC. ls -hD. ls -d44. 在Linux操作系统下,如何安装一个新软件包?A. apt-get updateB. yum install package_nameC. pacman -S package_nameD. brew install package_name45. 在Linux操作系统下,如何使用grep命令查找包含特定字符串的文件?A. grep "search_string" filenameB. grep "search_string" /path/to/filenameC. grep "search_string" $(find /path/to/search -type f)D. grep "search_string" /path/to/search/*46. 在Linux操作系统下,如何修改文件的所有者和组?A. chown new_owner:new_group filenameB. chown new_owner:new_group /C. chown new_owner:new_group *D. chown new_owner:new_group .47. 在Linux操作系统下,如何创建一个新的用户组?A. groupadd group_nameB. groupadd -g GID group_nameC. groupadd -G GID group_nameD. groupadd -p group_name48. 在Linux操作系统下,如何设置Shell提示符?A. export PS1="\u@\h:\w\$ "B. export PS1="\u@\h:\w\$ "C. export PS1="\u@\h:\w\\$ "D. export PS1="\u@\h:\w\$ "二、问答题1. 请简述在Linux操作系统下搭建C语言开发环境的步骤。

linux及C试题(含答案)

linux及C试题(含答案)

linux及C试题(含答案)华清远见嵌入式学院《Linux及C》考试题(B卷)一、选择题(23题,每空2分,共46分)1.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项(D )。

A.-mB.-dC.-fD.-p2.任何时候用户需要回到用户主目录时可以使用命令 ( A ) 。

A. cdB. pwdC. pathD. cd .3.将当前目录下的文件shell.sh移动到目录/home/linux下的命令为( B ) 。

A. cp shell.sh /home/linuxB. mv shell.sh /home/linuxC. ls shell.sh / home/linux/she ll.shD. mv /root/shell.sh /home/linux/shell.sh4.下面( C )命令不能用来显示文件的内容。

[A] more [B] less [C] find [D] cat5./etc/shadow文件中存放( B )。

A.用户账号基本信息B.用户口令的加密信息C.用户组信息D.文件系统信息6.LINUX所有服务的启动脚本都存放在( B )目录中。

A./etc/rc.d/init.dB./etc/init.dC./etc/rc.d/rcD./etc/rc.d7.若要将当前目录中的myfile.txt文件压缩成myfile.txt.tar.gz,则实现的命令为(C )。

A.tar -cvf myfile.txt myfile.txt.tar.gzB.tar -zcvf myfile.txt myfile.txt.tar.gzC.tar -zcvf myfile.txt.tar.gz myfile.txtD.tar -cvf myfile.txt.tar.gz myfile.txt8.以下程序的运行结果为( C )#include#includeint SubCount(char *dest, int count){strcpy(dest,"555");count++;return 0;}int main(){int count = 3;char caBuf[8];SubCount(caBuf,count);printf("%d\n",count);return 0;}[A] 8[B] 4[C] 3 [D] 59.下面的代码输出是( A )void foo(void){unsigned int a = 6; int b = -20;(a+b > 6) ? puts("> 6") : puts("<= 6");}[A] > 6 [B] <= 610.C语言中,逻辑“真”等价于( C )。

linux 试题及答案

linux 试题及答案

linux 试题及答案第一部分:选择题1. Linux 是一种()操作系统。

a) 开源b) 闭源c) 商业d) 私有答案:a) 开源2. 在 Linux 中,用于显示当前所在路径的命令是()。

a) pwdb) lsc) cdd) cp答案:a) pwd3. 在 Linux 中,用于创建目录的命令是()。

a) mkdirb) touchc) rmd) mv答案:a) mkdir4. Linux 中,用于列出当前目录下的文件和文件夹的命令是()。

a) lsb) cdc) pwdd) rm答案:a) ls5. 在 Linux 中,用于复制文件的命令是()。

a) cpb) mvc) touchd) mkdir答案:a) cp第二部分:填空题1. Linux 操作系统的核心部分被称为()。

答案:内核2. Linux 中,用于修改文件或目录的权限的命令是()。

答案:chmod3. 在 Linux 中,用于压缩文件的命令是()。

答案:tar4. Linux 是基于()开发的操作系统。

答案:UNIX5. Linux 中,默认的超级用户账户是()。

答案:root第三部分:简答题1. 什么是 Linux 操作系统?答:Linux 是一种开源操作系统,它基于 UNIX 操作系统开发而成。

Linux 以其稳定性、可定制性和安全性而闻名,并广泛运用于服务器和嵌入式设备等领域。

2. 如何在 Linux 中创建一个新用户?答:可以使用 `useradd` 命令来创建一个新用户,例如 `useradd -m newuser`。

其中,`-m` 参数表示同时创建用户的主目录。

3. 如何修改文件的访问权限?答:可以使用 `chmod` 命令来修改文件的访问权限。

例如,要将文件的所有者权限设置为可读可写可执行,可以使用 `chmod u+rwx filename` 命令。

4. 如何在 Linux 中安装软件包?答:可以使用包管理器,如 `apt` (用于 Debian 系统)或 `yum` (用于 Red Hat 系统),来安装软件包。

linux系统编程试卷(答案)

linux系统编程试卷(答案)

凌阳教育嵌入式培训系统编程部分测试试题注:考试为闭卷,程序题需上机操作运行出结果,考试时间为120分钟一:选择题(本题共4小题,每题3分共12分)1)下列不是Linux系统进程类型的是( D )A 交互进程B 批处理进程C 守护进程D 就绪进程(进程状态)2)以下对信号的理解不正确的是( B )A 信号是一种异步通信方式B 信号只用在用户空间进程通信,不能和内核空间交互C 信号是可以被屏蔽的D 信号是通过软中断实现的3)进程有三种状态( C )A 准备态、执行态和退出态B 精确态、模糊态和随机态C 运行态、就绪态和等待态D 手工态、自动态和自由态4)不是进程和程序的区别( B)A 程序是一组有序的静态指令,进程是一次程序的执行过程B 程序只能在前台运行,而进程可以在前台或后台运行C 程序可以长期保存,进程是暂时的D 程序没有状态,而进程是有状态的二:填空题(本题共6小题,2)、3)两题每空四分,其余每空一分。

共23分)1) 列举八种常见的进程间通信方式无名管道、有名管道、消息队列、信号量、共享内存、信号、套接字网络上两个主机的进程间通信方式为套接字2) 命名管道比无名管道的优势提供了一个可以访问的路径名,实现没亲缘关系的进程间通信3) 消息队列比命名管道和无名管道的优势可以按类型实现消息的随机查询,没必要先进先出4) 按照逻辑结构不同进行数据库划分,Sqlite 数据库属于哪一类关系型数据库5) 在C语言中操作sqlite数据库,常用的2中方式是sqlite_exec(回调)、sqlite_gettable(非回调)6) 列举四种进程调度算法先来先调度(FCFS)、短进程优先调度(SPF)、高优先级调度(HPF)、时间片轮转调度三:问答题(本题共7题,每题5分,共35分)1) 什么是系统调用?系统调用是通过什么方式陷入内核态的?请写出你对系统调用的理解。

什么是文件I/O和标准I/O库?文件I/O和标准I/O库的区别?系统调用是指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得操作系统内核提供的服务。

LinuxC面试题汇总(总有你不知道的知识点)

LinuxC⾯试题汇总(总有你不知道的知识点)linux C1.⽤变量a给出下⾯的定义.a) ⼀个整型数b) ⼀个指向整型数的指针c) ⼀个指向指针的的指针,它指向的指针是指向⼀个整型数d) ⼀个有10个整型数的数组e) ⼀个有10个指针的数组,该指针是指向⼀个整型数的f) ⼀个指向有10个整型数数组的指针g) ⼀个指向函数的指针,该函数有⼀个整型参数并返回⼀个整型数h) ⼀个有10个指针的数组,该指针指向⼀个函数,该函数有⼀个整型参数并返回⼀个整型数答案是:a) int a;b) int *a;c) int **a;d) int a[10];e) int *a[10];f) int (*a)[10];g) int (*a)(int);h) int (*a[10])(int);2.写⼀个“标准”宏MIN,这个输⼊两个参数并返回较⼩的⼀个。

#define Min(a,b) ( ((a)>=(b))?(b):(a))3.嵌⼊式经常⽤到死循环,你怎么样⽤C来编写死循环呢?我的⾸选就是:while(1){},⼀些有经验的程序员喜欢⽤for( ; ; ){} ,还有⼀种是写汇编语⾔的程序员常⽤的写法:Loop:…goto Loop;4.引⽤和指针的区别?答:1.引⽤必须要初始化,指针可以不⽤初始化;2.不存在指向空值的引⽤,但是存在指向空值的指针;3.引⽤初始化后不能改变,但存在指向空值的指针;4.引⽤是变量的别名,本⾝不单独分配⾃⼰的内存空间,⽽指针有⾃⼰的内存空间;5.关键字static的作⽤是什么?在c语⾔中static有三个明显的作⽤:1)static在修饰局部变量的时候,其使得局部变量的⽣命周期发⽣改变,使得其放在data段,直到程序运⾏结束才结束。

2)static在修饰全局变量的时候,作⽤是改变其作⽤域,使得全局变量只能在定义的⽂件中使⽤。

3)static在修饰函数的时候,同样也是只能时函数只能在当前的⽂件中使⽤。

linux c笔试题

c语言常见笔试题大全(一)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为u币你哦门票,模糊刚看见快乐科技计划发广告和统一,(表示无符号长整型),那么你有了一个好的起点。

记住,第一印象很重要。

2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

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

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

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

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

3). 懂得在宏中小心地把参数用括号括起来4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);3. 预处理器标识#error的目的是什么?如果你不知道答案,请看参考文献1。

这问题对区分一个正常的伙计和一个书呆子是很有用的。

只有书呆子才会读C语言课本的附录去找出象这种问题的答案。

当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。

死循环(Infinite loops)4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。

我首选的方案是:while(1){}一些程序员更喜欢如下方案:for(;;){}这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。

《LINUX系统及其编程》考试试题及答案

《Linux系统及其编程》模拟练习参考答案一、单项选择题1.Linux的根分区的文件系统类型是C。

A. FAT16B.FAT32C. ext3D. NTFS 2.安装好Linux操作系统后,系统默认的超级用户(系统管理员)账号是C。

A. administratorB.guestC.rootD. boot 3.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在C目录中。

A. /binB. /etcC. /devD. /lib 4.Linux有三个查看文件的命令,若希望在查看文件内容过程中,可以用光标上下移动来查看文件内容,应使用C命令。

A. catB.moreC. lessD. menu 5.可以为文件或目录重命名的命令是C。

A. mkdirB. rmdirC. mvD. rm6.已知某用户stud1,其用户目录为/home/stud1。

如果当前目录为/home,进入目录/home/stud1/test的命令是:C。

A. cd testB. cd /stud1/testC. cd stud1/testD.cd home 7.Linux文件权限一共10位长度,分成四段,第三段表示的内容是C。

A.文件类型B.文件所有者的权限C.文件所有者所在组的权限D.其他用户的权限8.将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下,命令是B。

A. mount –t vfat dev/hda1 /winsysB. mount –t vfat /dev/hda1 /winsysC. mount –t vfat /dev/hda1 winsysD. mount –t vfat dev/hda1 winsys9.一般情况下,系统启动过程自动加载的文件系统信息是存放在文件D中A. /usr/sbin/cfdiskB. /sbin/fdiskC. /etc/mtabD. /etc/fstab 10.系统中有用户user1和user2,同属于users组。

linux下c测试

Linux下C程序设计测试题(考试时间:120分钟)班级:学员姓名:题型选择题填空题综合题编程题总分得分一、选择题(每题2分,共40分)1、下列可用于C语言用户标识符的一组是()A. void define WORDB. WinMain_123 CarC. For -abcIFCaseD. 2a DOsizeof2、break语句不能用在哪个语句段里()A.switch...case B. forC. ifD. while3、已知int a[3][2]={3,2,1};则表达式"a[0][0]/a[0][1]/a[0][2]"的值是()A.1.5B.1C.0D.错误的表达式4、下列描述中不正确的是()。

A、字符型数组中可能存放字符串。

B、可以对字符型数组进行整体输入、输出。

C、可以对整型数组进行整体输入、输出。

D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。

5、有函数调用func(recl,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是:()A. 3B. 4C. 5D. 有语法错误6、以下能正确定义二维数组的是()A. inta[][3];B. int a[][3]=2{2*3};C. int a[][3]={};D. int a[2][3]={{1},{2},{3,4}};7、已有定义intx;float y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678<回车>,则y 的值为()A. 无定值B. 45.000000C. 678.000000D. 123.0000008、八进制的123代表十进制的()A.84 B. 83 C. 82 D. 819、若有以下定义:char a; int b; float c; double d; 则表达式“a*b+d-c”值的类型为()A.floatB.intC.charD.double10、有以下程序:int main(){int m;m = -2;if(m=1)printf(“@@@”);elseprintf(“%%%”);}程序运行后的输出结果是()A.@@@B.%%%C.%%D.@@@%%%11、若有如下程序:main(){char a[][9]={"china","Japan","USA","France"};printf("%s\n",a[2]);}则程序运行后的输出结果是()A.JapanB.′USA′C.USAD.inaJapanUSAFrance12、两次运行下面的程序,如果从键盘上分别输入x的值6和3,则输出结果是()。

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

上嵌《嵌入式Linux系统编程》考试试卷C
一、选择题(5×1')
1、( C )就是操作系统中最重要、最基本的概念之一,它就是系统分配资源的基本单位,就是一个具有独立功能的程序段对某个数据集的一次执行活动。

A、程序
B、作业
C、进程
D、线程
2、( B )的主要特点就是提供即时响应与高可靠性。

生产过程的控制、武器系统、航空订票系统、银行业务就就是这样的系统。

A、分时系统
B、实时系统
C、批处理系统
D、分布式系统
3、( B )数据传送方式的作用就是在外围设备与内存之间开辟直接的数据交换通道。

A、程序直接控制
B、 DMA
C、通道控制
D、中断
4、下面临界区概念论述正确的就是( A )
A、临界区就是指进程中用于实现进程互斥的那段程序代码
B、临界区就是指进程中用于实现进程同步的那段程序代码
C、临界区就是指进程中用于实现进程通信的那段程序代码
D、临界区就是指并发进程中与共享变量有关的程序段
5、多道程序设计就是指( D )
A、在实时系统中并发运行多个程序
B、在分布式系统中同一时刻运行多个程序
C、在一台处理机上同一时刻运行多个程序
D、在一台处理机上并发运行多个程序
二、填空题(20×1')
1、在Linux系统中,以_____文件___方式访问设备 ,每个文件用____i节点___来标识。

2、启动Linux Shell的时候,stdin , stdout , stderr 三个文件描述
符会自动打开,她们的值分别就是_ 0 _, 1 , 2 、
3、创建新进程的系统调用就是 fork()、 exec() ,创建新线程的函数就是pthread_create() 、
4、操作系统发展的历程,从串行处理,批处理程序, 多道程序 ,_____分时处理______、
5、进程控制块的三类信息:进程标识信息,___进程状态信息____,___进程控制信息_____、
6.进程具有的基本状态为:__R____ 、__S____ 、__T____ 、__Z___ 。

7、安装Linux系统对硬盘分区时,必须有两种分区类型: _根分区_____ 与 _交换分区_____ 。

8、编写的Shell程序运行前必须赋予该脚本文件 _执行_____ 权限。

三、简答题(30')
1、进程间通信的方法有哪些?各自有什么优缺点?那一种方法效率最高?
答:
管道、信号及信号量、消息队列、共享内存
管道:半双工通信方式,数据只能单向流动
信号及信号量:信号量就是一个计数器,可以用来控制多个进程对共享资源的访问, 主要作为进程间以及同一进程内不同线程之间的同步手段。

消息队列:消息队列就是由消息的链表,存放在内核中并由消息队列标识符标识。

消息,队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点
共享内存:共享内存就就是映射一段能被其她进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问
共享内存:效率最高
2、文件指针FILE *与文件描述符就是一个什么样的关系?
答:
FILE*定义的就是文件描述流,文件描述符就是linux种的文件操作句柄。

函数fdopen() 3、解释单体内核与微内核之间的区别、
答:
单体内核包含了所有功能:调度,文件系统,设备驱动程序,网络,存储管理等。

威核内只能有部分功能:基本调度,进程通信,地址空间。

4、处理器的操作模式分为内核模式与用户模式,请问模式切换与进程切换有什么区别?
答:
模式切换时内核级与用户级之间的切换
进程切换只就是几个进程之间的切换。

5、网络通信中, TCP与UDP有什么区别?
答:
TCP在发送数据包前都在通信双方有一个三次握手机制,确保双方准备好,在传输数据包期间,TCP会根据链路中数据流量的大小来调节传送的速率,传输时如果发现有丢包,会有严格的重传机制,从而以保证数据包可靠的传输。

DUP的传输就是不可靠的,发送端有数据包我就发送,不会去理会对端的承受能力与链路状况。

6、UDP分多少种形式,各有什么特点。

答:
单播:一对一的通讯模式,服务器及时响应客户机的请求
多播/组播:一对一组的通讯模式,需要相同数据流的客户端加入相同的组共享一条数据流, 节省了服务器的负载
广播:一对所有的通讯模式,所有主机都可以接收到所有信息,服务器流量负载极低
7、进程通信中,同步信号与异步信号的差别。

答:
异步信号:进程通信在发送字符时,异步信号所发送的字符之间的时间间隔可以就是任意的, 不需要阻塞等待
同步信号:双方必须要先建立同步,发送后等待接受,不可以任意收发
《Linux系统程序设计》机试
1、实现char* myStrncpy(char *dst, char* src, size_t n); 6分
返回值:如果复制成功,则返回目标地址dst的值,
形参分别就是: (目标地址,源地址,复制字节数)
注意程序的健壮,合理,简洁,高效 (越简单的函数,越容易写错)
2、写2个非亲属进程程序 14分
程序a负责在内存里找bash,并把找到的bash的PID转成int型的数据,然后传送给另一个进程, 程序b,接收数据,把这个PID关闭掉
数据传输用消息队列
3、写一个程序,里面有2个线程; 20分
线程a, 从键盘接收数据, 写入共享内存;
线程b, 从共享内存读出数据, 然后写入一个rec、txt文本文件中,
数据传输用共享内存, 同步模式用线程-信号量;。

相关文档
最新文档