Linux系统编程试题C

合集下载

嵌入式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语言面试试题

基础试题(C语言)一、ANSI C/C++方面的知识一.1、简答题。

下面的题目必须全部答对才给分(20分):1、如何在C中初始化一个字符数组。

2、如何在C中为一个数组分配空间。

3、如何初始化一个指针数组。

4、如何定义一个有10个元素的整数型指针数组。

5、s[10]的另外一种表达方式是什么。

6、GCC3.2.2版本中支持哪几种编程语言。

7、要使用CHAR_BIT需要包含哪个头文件。

8、对(-1.2345)取整是多少?9、如何让局部变量具有全局生命期。

10、C中的常量字符串应在何时定义?11、如何在两个.c文件中引用对方的变量。

12、使用malloc之前需要做什么准备工作。

13、realloc函数在使用上要注意什么问题。

14、strtok函数在使用上要注意什么问题。

15、gets函数在使用上要注意什么问题。

16、C语言的词法分析在长度规则方面采用的是什么策略?17、a+++++b所表示的是什么意思?有什么问题?18、如何定义Bool变量的TRUE和FALSE的值。

19、C语言的const的含义是什么。

在定义常量时,为什么推荐使用const,而不是#define。

20、C语言的volatile的含义是什么。

使用时会对编译器有什么暗示。

一.2、问答题。

1、-----------------------------------------------------------"匈牙利命名法"有什么优缺点?(2分)2、-----------------------------------------------------------下面x, y, *p的值是多少,有什么问题?(2分)int x, y, z = 2;int *p=&z;x=sizeof*p;y=x/*p; /* x=?, *p=?, y=?, 有什么问题?*/3、-----------------------------------------------------------下面的语句是什么意思?如何声明或定义才使它们更易懂?(10分)int (*foo())();int (*foo())[];int (*foo[])();(*(void(*)())0)();void (*signal(int,void(*)(int)))(int);4、-----------------------------------------------------------本题(2分)。

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 c笔试题

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下c测试

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,则输出结果是()。

linux 编程练习题

linux 编程练习题

linux 编程练习题Linux 是一种开源的操作系统,被广泛应用于服务器、嵌入式系统和科学研究领域。

为了提高对 Linux 编程的熟练程度,以下是一些适合练习的题目,供大家参考。

1. 编写一个简单的 Shell 脚本,实现以下功能:- 打印出当前时间和日期- 列出当前目录下所有以".txt"结尾的文件- 统计当前目录下所有以".txt"结尾的文件的行数2. 编写一个 C 程序,实现字符串逆序输出的功能。

要求输入一个字符串,然后将其逆序输出。

示例:输入 "Hello World!",输出 "!dlroW olleH"3. 编写一个 Python 程序,实现简单的文件操作功能。

要求程序能够:- 创建一个文本文件,并将指定内容写入到该文件中- 读取文件内容,并打印到屏幕上- 将文件内容复制到另一个文件中4. 编写一个 Bash 脚本,实现通过 SSH 自动登录远程服务器,并执行命令的功能。

要求程序能够:- 输入远程服务器的 IP 地址、用户名和密码- 自动登录远程服务器- 执行指定的命令(例如,查看服务器上的硬盘使用情况)5. 编写一个 C++ 程序,实现简单的数据结构(例如链表、栈或队列)的操作。

要求程序能够:- 创建指定数据结构的实例- 在数据结构中插入、删除和查找元素- 输出数据结构的内容以上只是一些基础的练习题,通过完成这些题目可以帮助提高对Linux 编程的理解和技能。

在实际编程过程中,可以结合其他相关的知识和技术来完善代码,并发挥自己的创造力。

希望以上练习题能够帮助你提升对 Linux 编程的熟练程度,为日后更复杂的项目打下坚实的基础。

祝你编程愉快!。

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

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

嵌入式linux c开发常见笔试题目嵌入式Linux C开发是一个广泛应用于各种嵌入式设备的技术领域,也是许多企业在招聘时重点考察的技能。

在笔试中,考察的内容通常包括C语言基础、嵌入式系统知识、Linux系统编程等方面。

以下是一些常见的嵌入式Linux C开发笔试题目,供大家参考。

1. C语言基础在嵌入式Linux C开发中,对C语言的熟练掌握是非常重要的。

下面是一些与C语言基础相关的题目:1.1 请写出C语言中的数据类型,并解释其含义。

1.2 请解释C语言中的指针,并写出指针的声明、赋值和使用的例子。

1.3 请解释C语言中的结构体,并写出结构体的定义和使用的例子。

2. 嵌入式系统知识嵌入式系统是指在限定的资源和空间中运行的计算机系统,对于嵌入式Linux C开发来说,对嵌入式系统的了解是必不可少的。

下面是一些与嵌入式系统知识相关的题目:2.1 请解释嵌入式系统的特点,并举例说明。

2.2 请简要解释Linux内核的作用,并说明为什么在嵌入式系统中常使用Linux内核。

2.3 请解释交叉编译的概念,并说明为什么在嵌入式Linux C开发中常使用交叉编译。

3. Linux系统编程Linux系统编程是指在Linux系统上进行程序开发和调试的技术。

对于嵌入式Linux C开发者来说,熟悉Linux系统编程是必备的技能。

下面是一些与Linux系统编程相关的题目:3.1 请解释Linux系统中的进程和线程,并说明它们的区别和联系。

3.2 请解释Linux文件系统的层次结构,并说明每个层次的作用。

3.3 请解释Linux中的系统调用,并举例说明几个常用的系统调用。

4. 嵌入式Linux应用开发嵌入式Linux应用开发是指在嵌入式Linux系统上进行应用程序开发的技术。

下面是一些与嵌入式Linux应用开发相关的题目:4.1 请编写一个在嵌入式Linux系统上运行的Hello World程序。

4.2 请解释Linux设备驱动程序的概念,并说明为什么在嵌入式Linux应用开发中常涉及到设备驱动程序。

Linux基础教程试题C

Linux基础教程试题C
2、简述在 Linux 系统中外部存储设备的使用方法,如果要自动安装文件系统,应修改 什么配置文件? 没有盘符的概念,对于外部存储设备,如附加的硬盘, 盘等, 在 Linux 中,没有盘符的概念,对于外部存储设备,如附加的硬盘,光盘和 u 盘等,都要 挂载命令来为存储设备指定一个目录作为挂载点, 用 mount 挂载命令来为存储设备指定一个目录作为挂载点,然后通过该挂载点来使用存储 设备。当要自动挂载时,要修改文件/etc/fstab。 设备。当要自动挂载时,要修改文件 。 四、编程题(20 分) 1、简述 Linux 操作系统中进程间通信的基本方法 Linux 进程间的通信主要有以下几种: )管道和命名管道, )信号, )信号量、消息 进程间的通信主要有以下几种: (1) (2) (3) ( 管道和命名管道, ( 信号, ( 信号量、 队列和共享内存, (4) 队列和共享内存, )套接字(socket) ( 套接字( ) 2、编写一个 shell 脚本,求两个数的和 #! /bin/bash x = $1 y = $2 let "z = $x + $y" echo $1 + $2 = $z
7、用户可以定制自己 shell 的文 8、除了 root
用户,其他用户对/etc/passwd 文件是只读的。
9、要得到一个用户的详细信息,除了 passwd 文件之外,还可以通过命令 finger 来查看。 10、检测网络连通性的命令是 ping 。 三、名词解释(20 分) 1、管道 系统传统的进程通信技术,包括管道和命名管道,通过文件系统来实现。 管道是 UNIX 系统传统的进程通信技术,包括管道和命名管道,通过文件系统来实现。2、 GNU GNU 是 GNU is not UNIX 的缩写,是自由软件基金会发起的一个项目的名称,该项目试图 的缩写,是自由软件基金会发起的一个项目的名称, 开发一个类似于 UNIX、但是是可自由发布和可移植的操作系统。 、但是是可自由发布和可移植的操作系统。 3、线程 线程( 线程(thread)是在一个进程内的基本调度单位,线程可以看作是一个执行流,拥有记录自 )是在一个进程内的基本调度单位,线程可以看作是一个执行流, 己状态和运行现场的少量数据(堆栈和上下文)但没有单独的代码段和数据段, 己状态和运行现场的少量数据(堆栈和上下文)但没有单独的代码段和数据段,而是与其 他线程共享。 他线程共享。 4、环境变量 环境变量描述了进程的运行环境,一般用大写字母表示,可以被重新设置。 环境变量描述了进程的运行环境,一般用大写字母表示,可以被重新设置。 四、简答题(20 分) 1、请你谈谈 Linux 操作系统有什么优点? Linux 的主要优点包括:1) 提供了先进的网络支持:内置 TCP/IP 协议;2) 真正意义上的多任务、 的主要优点包括: ) 提供了先进的网络支持: 协议; ) 真正意义上的多任务、

linuxc试题

linuxc试题

L I N U X c试题(总10页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--华清远见嵌入式学院第一学期期中考试一、选择题(20题,共44分)1.常见的Linux发行版本有很多,下面不是Linux发行版本的是( )。

[A] Red Hat Linux [B] Ubuntu Linux [C] X Window [D] SuSE Linux2.下面不是对Linux操作系统特点描述的是( )。

[A] 良好的可移植性[B] 单用户 [C] 多用户 [D] 多任务3.下面( )命令不能用来显示文件的内容。

[A] more [B] less [C] find [D] cat4.查看创建目录命令mkdir的帮助文档,可以使用命令( )。

[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir5.假设目录中存在若干文件(num表示文件编号,1~10),使用以下( )通配符可以挑选出其中的编号为1、3、5的文件。

[A] file_*.txt [B] flie_.txt [C] file_[135].txt [D] file_[^135].txt6.文件权限 r-x-wxr--对应的八进制表示形式为( )[A] 0536 [B] 0654 [C] 0656 [D] 05347.在C语言中,要求运算数必须是整型的运算符是( )。

[A] / [B] ++ [C] != [D] %8.C语言中,逻辑“真”等价于( )。

[A] 大于零的数 [B] 大于零的整数 [C]非零的数 [D] 非零的整数9.目前流行的两种软件包管理机制,Debian使用( )软件包,Redhat使用( )软件包。

[A] tgz [B] rpm [C] tar [D] deb10.下面函数的功能是( )。

int fun (char*x){char*y=x;while(*y++);return(y-x-1);}[A] 求字符串的长度[B] 比较两个字符串的大小[C] 将字符串x复制到字符串y[D] 将字符串x连接到字符串y后面11.C语言程序的三种基本程序是( )。

linux c语言编程训练题

linux c语言编程训练题

linux c语言编程训练题含解答共5道下面是一些简单的Linux C 语言编程训练题,每个题目都包含了简短的解答。

请注意,这些问题旨在测试基本的C 语言编程知识和Linux 系统编程概念。

1. 打印文件内容编写一个程序,接受一个文件名作为命令行参数,并打印文件的内容到终端。

```c#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) {if (argc != 2) {fprintf(stderr, "Usage: %s <filename>\n", argv[0]);exit(EXIT_FAILURE);}FILE *file = fopen(argv[1], "r");if (file == NULL) {perror("Error opening file");exit(EXIT_FAILURE);}int c;while ((c = fgetc(file)) != EOF) {putchar(c);}fclose(file);return 0;}```2. 计算文件行数编写一个程序,接受一个文件名作为命令行参数,并统计文件的行数。

```c#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) {if (argc != 2) {fprintf(stderr, "Usage: %s <filename>\n", argv[0]);exit(EXIT_FAILURE);}FILE *file = fopen(argv[1], "r");if (file == NULL) {perror("Error opening file");exit(EXIT_FAILURE);}int lines = 0;int c;while ((c = fgetc(file)) != EOF) {if (c == '\n') {lines++;}}printf("Number of lines: %d\n", lines);fclose(file);return 0;}```3. 逆序输出字符串编写一个程序,接受一个字符串作为命令行参数,并逆序输出该字符串。

linuxC高级程序设计试卷.pdf

linuxC高级程序设计试卷.pdf

if((pid=fork())==0)
{
( 1)
;
if((real_read=read(pipe_fd[0],buf,MAX_DATA_LEN))>0)
printf("%d bytes read from the pipe is'%s'\n",real_read,buf);

close(pipe_fd[0]);
1. / root 目录是:
A. 系统的根目录
B. 超级用户的主目录
C. 动态连接库
D. 系统管理程序


2. 下列不是可执行程序运行时内存结构的是

A. 代码区
B. 数据区
C. 栈堆区
D. 变量区
10. 在 Linux 系统中,硬件设备大部分是安装在
A. /mnt
B. /dev
C. /proc
D. /swap
C 创建 /tmp/temp 文件,但是需要键入 ”y”进行确认
D 直接创建 /tmp/temp 文件,不用确认,因为有 -f 选项
12.下列说法错误的是

A. 静态变量只初始化一次。 B. 全局变量和静态局部变量在运行时改变其值。 C. 堆区数据由编译器自动分配释放。 D. 函数中定义的局部变量内存分配由编译器自动分配释放。
-1。
B. 返回值等于 0 表示子进程。
6. 文件 exer1 的访问权限为 744,现要取消文件所有者的执行权限, 同时增加同组用户的写权限,
C. 返回值大于 0 表示父进程。 D. 大于 0 的返回值为父进程 PID?号。
15.下列进程间通信方式中能实现不同计算机间进程通信的是

linux c 面试题

linux c 面试题

linux c 面试题Linux C 面试题一般涉及到Unix/Linux系统编程相关内容,旨在了解面试者对于系统级编程的理解和实践经验。

下面是一些常见的LinuxC 面试题,供参考。

一、基础知识类题目1. 请简述进程和线程的区别以及优缺点。

答:进程是资源分配和调度的基本单位,拥有独立的地址空间;线程是调度的基本单位,共享地址空间。

进程之间切换开销大,数据共享和通信相对复杂;线程切换开销小,数据共享和通信相对简单。

进程相对安全,一个进程崩溃不会影响其他进程;线程相对高效,创建、销毁开销小。

2. 请解释虚拟内存的概念。

答:虚拟内存是一种将进程地址空间和物理内存分离的机制。

通过将进程的虚拟地址映射到物理内存上,实现了对内存的抽象和管理。

虚拟内存使得每个进程有独立的地址空间,提高了内存的利用率和管理的灵活性。

3. 请说明静态链接库和动态链接库的区别。

答:静态链接库在编译时被连接到可执行文件中,执行时不再需要外部的库文件;动态链接库在程序执行时才会被加载到内存中。

静态链接库增加了可执行文件的大小,但程序执行时不依赖外部环境;动态链接库减小了可执行文件的大小,但程序在执行时需要依赖外部环境。

二、编程题目1. 编写一个程序,实现字符串逆序输出。

```c#include <stdio.h>#include <string.h>void reverse(char* str) {int len = strlen(str);for (int i = len - 1; i >= 0; i--) {printf("%c", str[i]);}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);printf("逆序输出为:");reverse(str);return 0;}```2. 编写一个程序,统计一个字符串中每个字符出现的次数。

Linux下C语言编程题目

Linux下C语言编程题目

Linux下C语言编程题目Linux下C语言编程测试题目说明:1. 试卷总分100分。

2. 试卷中代码的运行环境为:Linux 2.6.23环境,平台为32为处理器系统,编译器为GCC4.4.3。

一.选择题:1.下面哪项不是链表优于数组的特点?()A. 方便删除B. 方便插入C. 长度可变D. 存储空间小2. 以下程序的输出结果是( )。

int func(int n){ static int m=0;m=m+n;return(m); }main(){ int i,a=0;for(i=1;i<=4;i++)a+=func(i);printf("%d\n",a); }A.10 B.15 C.20 D.223. 以下程序执行后,a的值是()void main(){int a,k=4,m=6,*p1=&k,*p2=&ma = p1==&mprintf(“%d\n”,a);}A) 4 B) 1 C) 0 D) 运行时出错,a无定值4. 编译以下程序时,结果是()。

#include //第1行#define aa 123; //第2行void main(void) //第3行{cout<<aa<<="">A.编译时第2行出错B.编译时第4行出错C.编译时第2行和第4行出错D.编译时无错误5.main(){struct node{int a;int b;int c;};struct node s= { 3, 5,6 };struct node *pt = &sprintf("%d" , *(int*)pt);}这段程序的输出是:(a) 3(b) 5(c) 6(d) 76.int foo ( int x , int n){int val;val =1;if (n>0){if (n%2 == 1) val = val *x;val = val * foo(x*x , n/2);}return val;}这段代码对x和n完成什么样的功能(操作)(a) x^n (x的n次幂)(b) x*n(x与n的乘积)(c) n^x(n的x次幂)(d) 以上均不是7.main(){int a[5] = {1,2,3,4,5};int *ptr = (int*)(&a+1);printf("%d %d" , *(a+1), *(ptr-1) );}这段程序的输出是:(a) 2 2(b) 2 1(c) 2 5(d) 以上均不是8.void foo(int [][3] );main(){int a [3][3]= { { 1,2,3} , { 4,5,6},{7,8,9}}; foo(a); printf("%d" , a[2][1]);}void foo( int b[][3])++ b;b[1][1] =9;}这段程序的输出是:(a) 8(b) 9(c) 7(d)以上均不对9.main(){int a, b,c, d;a=3;b=5;c=a,b;d=(a,b);printf("c=%d" ,c);printf("d=%d" ,d);}这段程序的输出是:(a) c=3 d=3(b) c=5 d=3(c) c=3 d=5(d) c=5 d=510.main(){int a[][3] = { 1,2,3 ,4,5,6};int (*ptr)[3] =a;printf("%d %d " ,(*ptr)[1], (*ptr)[2] ); ++ptr; printf("%d %d" ,(*ptr)[1], (*ptr)[2] );这段程序的输出是:(a) 2 3 5 6(b) 2 3 4 5(d) 以上均不对11.int *f1(void){int x =10;return(&x);}int *f2(void){int*ptr;*ptr =10;return ptr;}int *f3(void){int *ptr;ptr=(int*) malloc(sizeof(int));return ptr;}上面这3个函数哪一个最可能引起指针方面的问题(a) 只有f3(b) 只有f1 and f3(c) 只有f1 and f2(d) f1 , f2 ,f312.void f1(int *, int);void f2(int *, int);void (*p[2]) ( int *, int);main(){int a;int b;p[0] = f1;p[1] = f2;a=3;b=5;p[0](&a , b);printf("%d\t %d\t" , a ,b); p[1](&a , b);printf("%d\t %d\t" , a ,b); }void f1( int* p , int q) {tmp =*p;*p = q;q= tmp;}void f2( int* p , int q) {int tmp;tmp =*p;*p = q;q= tmp;}这段程序的输出是:(a) 5 5 5 5(b) 3 5 3 5(c) 5 3 5 3(d) 3 3 3 313.void e(int );main(){int a;a=3;e(a);}void e(int n){if(n>0){e(--n);printf("%d" , n);e(--n);}}这段程序的输出是:(a) 0 1 2 0(b) 0 1 2 1(c) 1 2 0 1(d) 0 2 1 114.typedef int (*test) ( float * , float*)test tmp;tmp 的类型是(a) 函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数Pointer to function of having two arguments that is pointer to float(b) 整型(c) 函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型Pointer to function having two argument that is pointer to float and return int(d) 以上都不是15.main(){char p;char buf[10] ={ 1,2,3,4,5,6,9,8};p = (buf+1)[5];printf("%d" , p);}这段程序的输出是:(a) 5(b) 6(c) 9(d) 以上都不对16.V oid f(char**);main(){char * argv[] = { "ab" ,"cd" , "ef" ,"gh", "ij" ,"kl" };f( argv );}void f( char **p ){char* t;t= (p+= sizeof(int))[-1];printf( "%s" , t);}这段程序的输出是:(a) ab(b) cd(c) ef(d) gh17.int counter (int i){static int count =0;count = count +i;return (count );}main(){int i , j;for (i=0; i <=5; i++)j = counter(i);}本程序执行到最后,j的值是:(a) 10(b) 15(c) 6(d) 718. 下列程序的输出是什么?()#include#includeusing namespace std;int main(){int x = 10, y = 10, i;for(i=0; x>8; y=i++){pri ntf(“%d, %d,”, x--, y);}return 0;}A 10,0,9,1B 10,10,9,0C 10,1,9,2D 9,10,8,019 which definition is correct?( )A int a[];B int n=10,a[n];C int a[10+1]={0};D int a[3]={1,2,3,4};20 How many bytes will be occupied for the variable(definition:char **a[3][4])?( )A 64B 96C 48D 128二.简答题:1.在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。

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

《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试题(含答案)

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系统编程试卷(答案)

凌阳教育嵌入式培训系统编程部分测试试题注:考试为闭卷,程序题需上机操作运行出结果,考试时间为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面试题汇总(总有你不知道的知识点)

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

linux系统编程试题c

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

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

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

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

A、程序直接控制B、 DMAC、通道控制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___ 。

  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文本文件中,
数据传输用共享内存, 同步模式用线程-信号量;
(素材和资料部分来自网络,供参考。

可复制、编制,期待您的好评与关注)。

相关文档
最新文档